对于一个EditText
盒子,用户应该只输入有效数字,所以我使用android:inputType="numberDecimal"
. 不幸的是,Android 提供的软键盘只有顶行有数字,而接下来的三行有各种其他符号(美元符号、百分号、感叹号、空格等)。由于numberDecimal
仅接受数字 0-9、负号和小数点,因此使用“电话”软键盘(3x3 网格中的 0-9,加上一些其他符号)会更有意义。这将使按钮更大,更容易点击(因为它是 4x4 网格,而不是同一屏幕区域中的 10x4 网格)。不幸的是, usingandroid:inputType="phone"
允许使用非数字字符,例如括号
我曾尝试使用android:inputType="numberDecimal|phone"
,但numberDecimal
位标志的方面似乎被忽略了。我也尝试过android:inputType="phone"
与 结合使用android:digits="0123456789-."
,但它仍然允许多个负号或小数点(inputType="number"
对类似的东西有很好的错误检查,甚至不会让用户输入)。我也尝试android:inputType="phone"
在 xml 布局文件中使用,同时DigitsKeyListener
在 java 代码中使用 a ,但随后只使用默认数字软键盘(仅在顶行有数字的那个)(它似乎是 set InputType.TYPE_CLASS_NUMBER
,这会使InputType.TYPE_CLASS_PHONE
set无效通过 xml 布局)。
编写自定义 IME 是行不通的,因为用户必须选择 IME 作为应用程序外部的全局选项。
有什么方法可以使用“电话”式软键盘,同时对输入的内容使用“数字”限制?