EditText属性maxLength对字母的限制不起作用/完全不起作用。
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”键(在键盘上)四次才能删除第二个字符,这完全没有意义。
有趣的是,这个功能在输入数字时可以正确地工作(如预期)。
问题出现的原因是键盘应用程序的自动建议功能导致了EditText属性maxLength在处理字母时无法正常工作。这是因为即使字符没有显示出来,键盘应用程序仍然需要“删除”这些字符。对于数字来说,这种情况不会发生,因为自动建议无法基于“23”提出建议。
解决方法是向EditText添加以下属性/值:
android:inputType="textNoSuggestions"
理论上,您可以将此属性与其他输入类型结合使用,例如:
android:inputType="textCapCharacters|textNoSuggestions"
希望我能帮助到遇到这个问题的人。愉快的编程 😉
仅供记录,我仍然觉得这很奇怪,所以任何更好的解释或更好的解决方法都可以提出建议。