【问题标题】:Allow entering negative sign first for Android EditText of number type数字类型的Android EditText允许先输入负号
【发布时间】:2021-07-30 18:23:09
【问题描述】:

我有多个 EditText

android:inputType="numberSigned|numberDecimal"

这在大多数情况下都有效,除了在尝试输入负数时,我必须先输入至少一个数字 (0~9),然后将光标移到前面以输入负号。我知道“-”不是有效的“有符号十进制数”,但强制用户为每个负数字段移动光标会适得其反。

有没有办法让numberSigned 允许先输入负号,还是我必须实现自定义InputFilter 以复制大部分"numberSigned|numberDecimal" 行为,除了允许先输入负号?

我已经使用 Android 8.1 模拟器和 Android 9 Motorola e6 对此进行了测试,以防万一。

编辑

标题错误地假设“numberSigned”默认情况下不允许先输入负号。相反,这是我在为这些 EditText 创建 InputFilter 时引入的一个错误——我不小心拒绝了“-”作为有效条目。

【问题讨论】:

    标签: android android-edittext virtual-keyboard android-inputtype


    【解决方案1】:

    简单的解决方案是使用 digits 关键字。

    <EditText 
      android:id="@+id/editText"
      android:digits="0,1,2,3,4,5,6,7,8,9,-,."
    />
    

    更难的解决方案是实现InputFilterTextWatcher,并在字符为“-”时让它们“覆盖”inputType 行为,以评估不需要进一步的工作。

    【讨论】:

    • 我有一个 InputFilter,但没有意识到我不小心过滤掉了里面的“-”...谢谢!
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多