大家好,我在两个设备之间遇到问题。
在实践中使用InputType
和KeyListener
我正在操纵一个EditText
让它从数字键盘接收逗号和数字(有关更多背景信息,请检查我之前的question https://stackoverflow.com/questions/60325496/searchview-use-multiple-comma-with-numeric-keyboard).
使用下面的代码我可以做类似的事情:
editText.setInputType(InputType.TYPE_CLASS_NUMBER + InputType.TYPE_NUMBER_FLAG_DECIMAL);
editText.setKeyListener(DigitsKeyListener.getInstance("0123456789,"));
不幸的是,这不适用于某些设备,例如Asus ZenPad 8.0
或者一些三星。
仅显示不带逗号的数字键盘,因此用户无法单击和使用它,重要的一点是,注释下面的代码行可以正确显示带有可用逗号的键盘。但通过这样做,他们不再能够在同一搜索中使用多个逗号。
editText.setKeyListener(DigitsKeyListener.getInstance("0123456789,"));
没有 KeyListener
使用 KeyListener
我还阅读了有关此的 android 文档,它说(source https://developer.android.com/reference/android/text/method/KeyListener):
用于将文本按键事件转换为编辑操作的接口
可编辑类。请注意,在大多数情况下,该接口已
被 InputMethod 定义的通用软输入法取代;它
应该只用于应用程序有自己的情况
屏幕键盘,还想处理硬键盘事件
匹配它。
软输入法上的按键不需要触发
方法在此侦听器中,并且实际上不鼓励这样做。这
默认的 Android 键盘不会为任何键触发这些
面向 Jelly Bean 或更高版本的应用程序,并且只会交付它
对于针对冰淇淋三明治的应用程序的某些按键或
早些时候。
那么基本上对于旧版本的 android 来说这不起作用?我怎样才能复制上述行为? (基本上我如何使用带有无限数量逗号的数字键盘)
欲了解更多详细信息,请发表评论,我将很乐意回复并添加更多信息!
提前致谢,
贾科莫.