setKeyListener将覆盖setInputType并更改键盘

问题描述 投票:1回答:1

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

[在实践中使用InputTypeKeyListener,我正在操纵EditText以使其从数字键盘接收逗号和数字(有关更多背景信息,请参阅我以前的question)。

使用以下代码,我可以执行类似的操作:

    editText.setInputType(InputType.TYPE_CLASS_NUMBER + InputType.TYPE_NUMBER_FLAG_DECIMAL);
    editText.setKeyListener(DigitsKeyListener.getInstance("0123456789,"));

enter image description here

[不幸的是,这在Asus ZenPad 8.0或某些Samsung等某些设备上不起作用。

仅显示数字键盘而没有逗号,因此用户无法单击和使用它。重要的注意事项是,注释下面的代码行会正确显示带有逗号的数字键盘。但是通过这样做,他们将不再能够在同一搜索中使用多个逗号。

    editText.setKeyListener(DigitsKeyListener.getInstance("0123456789,"));

没有KeyListener

使用KeyListener

我还阅读了有关此内容的android文档,并说[source):

用于将文本键事件转换为对可编辑的类。请注意,在大多数情况下,被InputMethod定义的通用软输入方法取代;它仅应在应用程序具有其自身的情况下使用屏幕键盘上,并且还希望处理硬键盘事件以匹配它。

不需要软输入法上的按键即可触发此侦听器中的方法,实际上不建议这样做。的默认的android键盘不会为任何键触发这些定位Jelly Bean或更高版本的应用程序某些按键可以针对冰淇淋三明治或较早。

所以基本上对于旧版本的android这行不通?如何复制以上行为? (基本上如何使用不带逗号的数字键盘)

有关更多详细信息,请发表评论,我将很乐意答复并添加更多信息!

谢谢,贾科莫。

java android android-edittext searchview android-inputtype
1个回答
0
投票

这全部取决于您使用EditText的目的(如果字母也可见,这会很悲惨吗?)您可以简单地使用默认输入类型,并在其上设置一个过滤器,以便它仅接受数字和一个“字符” ”(即逗号)。这是一个link,可让您执行此操作。诚然,它看上去不会很漂亮,但是它将为您的用户提供在所有设备上均可使用的可靠体验。

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

© www.soinside.com 2019 - 2024. All rights reserved.