Android 数字类型的 EditText 允许先输入负号
Allow entering negative sign first for Android EditText of number type
我有多个 EditText
android:inputType="numberSigned|numberDecimal"
这在大多数情况下都有效,除了在尝试输入负数时,我必须先输入至少一个数字 (0~9),然后将光标移到前面以输入负号。我知道“-”不是有效的“带符号的十进制数”,但强制用户为每个负数字段移动光标会适得其反。
有没有办法让 numberSigned
允许先输入负号,或者我是否必须实现自定义 InputFilter
来复制大多数 "numberSigned|numberDecimal"
行为,除了允许输入负号先签名?
我已经用 Android 8.1 模拟器和 Android 9 Motorola e6 进行了测试,以防万一。
编辑
标题错误地假定默认情况下“numberSigned”不允许先输入负号。这是我在为这些 EditText 创建 InputFilter 时引入的错误 – 我不小心拒绝了“-”作为有效条目。
简单的解决方案是使用 digits
关键字。
<EditText
android:id="@+id/editText"
android:digits="0,1,2,3,4,5,6,7,8,9,-,."
/>
更难的解决方案是实施 InputFilter
或 TextWatcher
,并使它们在字符为“-”时“覆盖”inputType
行为以评估没有进一步的工作是需要。
我有多个 EditText
android:inputType="numberSigned|numberDecimal"
这在大多数情况下都有效,除了在尝试输入负数时,我必须先输入至少一个数字 (0~9),然后将光标移到前面以输入负号。我知道“-”不是有效的“带符号的十进制数”,但强制用户为每个负数字段移动光标会适得其反。
有没有办法让 numberSigned
允许先输入负号,或者我是否必须实现自定义 InputFilter
来复制大多数 "numberSigned|numberDecimal"
行为,除了允许输入负号先签名?
我已经用 Android 8.1 模拟器和 Android 9 Motorola e6 进行了测试,以防万一。
编辑
标题错误地假定默认情况下“numberSigned”不允许先输入负号。这是我在为这些 EditText 创建 InputFilter 时引入的错误 – 我不小心拒绝了“-”作为有效条目。
简单的解决方案是使用 digits
关键字。
<EditText
android:id="@+id/editText"
android:digits="0,1,2,3,4,5,6,7,8,9,-,."
/>
更难的解决方案是实施 InputFilter
或 TextWatcher
,并使它们在字符为“-”时“覆盖”inputType
行为以评估没有进一步的工作是需要。