EditText属性maxLength对字母的限制不起作用/完全不起作用。

11 浏览
0 Comments

EditText属性maxLength对字母的限制不起作用/完全不起作用。

这是我在xml布局中的EditText:

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:maxLength="2"

android:maxLines="1"/>

这个EditText的长度限制(maxLength="2")只能部分地起作用。

看起来用户无法输入超过2个字符,因为多余的字符不会显示出来,但实际上,按下键盘上的字符“A”五次后,需要按下“back”键(在键盘上)四次才能删除第二个字符,这完全没有意义。

有趣的是,这个功能在输入数字时可以正确地工作(如预期)。

P.S. 已经检查了一些相关的问题,比如这个这个,但这些解决方案都不起作用。

0
0 Comments

问题出现的原因是键盘应用程序的自动建议功能导致了EditText属性maxLength在处理字母时无法正常工作。这是因为即使字符没有显示出来,键盘应用程序仍然需要“删除”这些字符。对于数字来说,这种情况不会发生,因为自动建议无法基于“23”提出建议。

解决方法是向EditText添加以下属性/值:

android:inputType="textNoSuggestions"

理论上,您可以将此属性与其他输入类型结合使用,例如:

android:inputType="textCapCharacters|textNoSuggestions"

希望我能帮助到遇到这个问题的人。愉快的编程 😉

仅供记录,我仍然觉得这很奇怪,所以任何更好的解释或更好的解决方法都可以提出建议。

0