setKeyListener 将覆盖 setInputType 并更改键盘

2024-05-12

大家好,我在两个设备之间遇到问题。

在实践中使用InputTypeKeyListener我正在操纵一个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 来说这不起作用?我怎样才能复制上述行为? (基本上我如何使用带有无限数量逗号的数字键盘)

欲了解更多详细信息,请发表评论,我将很乐意回复并添加更多信息!

提前致谢, 贾科莫.


这完全取决于您使用 EditText 的目的(如果字母也可见,那会是悲剧吗?)您可以简单地使用默认输入类型并简单地在其上设置一个过滤器,以便它只接受数字和一个“字符”(即当您击键时的逗号)。这里有一个link https://stackoverflow.com/questions/11009533/android-comma-as-decimal-separator-on-numeric-keyboard这可以让你做到这一点。诚然,它看起来不会那么漂亮,但它将为您的用户提供适用于所有设备的可靠体验。

另一种方法是如上所述创建自己的键盘

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

setKeyListener 将覆盖 setInputType 并更改键盘 的相关文章

随机推荐