我有一个屏幕,我希望用户只在文本字段中输入数字。我已经在 Android 中强制打开数字键盘,并且我正在根据数字的 ascii 值检测数字。
我正在考虑尝试不使用 KeyCode.NUMBER_PAD_X 来检测数字键盘按键,因为这只是 API 11 及更高版本的功能,我寻求与类似功能的更高兼容性。同样,检测特殊字符,如 ( ) + -/# , .是 API 11 及更高版本的内置函数。
在 Android 3.0/API 11 以下的一些 Android 手机上,数字键盘/电话键盘上也有特殊字符,API 根本不会忽略这些字符。在 G2 上,只有一些特殊字符会被忽略,但它允许将 ( ) + -/# 输入到 EditText 字段中,我的角色捕捉器不会注意到这些输入,即使它们超出了该条件的范围,并且我不能使用 API 11 级别的 KeyCodes 来显式检测它们
关于如何检测它们的任何解决方案?
用户可以输入它们并且它们出现在文本字段中是有问题的,但我的代码没有检测到它们,也没有在调试器中注册。它扰乱了我当前检查字符串长度的其他错误处理条件,用户可能会用这些字符溢出字符串
最佳答案
您可以在 EditText 上使用 android:digits 来限制 View 将接受的值。 例如:
android:digits="0123456789"
只接受数字。键盘仍将包含其他键,但实际上只会接受您允许的键。
关于Android 检测括号和特殊字符输入,在 api 11 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445833/