如何将 InputType=numberDecimal 与“电话”软键盘一起使用?

2024-02-10

For an EditText框,用户应该只输入有效的数字,所以我使用android:inputType="numberDecimal"。不幸的是,Android 带来的软键盘仅在顶行有数字,而接下来的三行有各种其他符号(美元符号、百分号、感叹号、空格等)。自从numberDecimal只接受数字 0-9、负号和小数点,使用“电话”软键盘(3x3 网格中的 0-9,加上一些其他符号)会更有意义。这将使按钮更大并且更容易点击(因为它是同一屏幕区域中的 4x4 网格而不是 10x4 网格)。不幸的是,使用android:inputType="phone"允许非数字字符,例如括号

我尝试过使用android:inputType="numberDecimal|phone",但是numberDecimal位标志的方面似乎被忽略了。我也尝试过使用android:inputType="phone"结合android:digits="0123456789-.",但仍然允许多个负号或小数点(inputType="number"对类似的事情有很好的错误检查,并且不会让用户输入)。我也尝试过使用android:inputType="phone"在 xml 布局文件中,同时使用DigitsKeyListener在java代码中,但随后只使用默认的数字软键盘(仅在顶行有数字的软键盘)(它似乎设置InputType.TYPE_CLASS_NUMBER,这使得InputType.TYPE_CLASS_PHONE由 xml 布局设置)。

编写自定义 IME 是行不通的,因为用户必须选择 IME 作为应用程序外部的全局选项。

有什么方法可以使用“电话”式软键盘,同时对输入内容使用“数字”限制?


我有同样的问题。这对我有用:

<item name="android:inputType">numberDecimal</item>
<item name="android:digits">0123456789.</item>

希望这对您有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 InputType=numberDecimal 与“电话”软键盘一起使用? 的相关文章

随机推荐