我想限制EditText小部件的文本长度, 如果用户输入比有限长度更多的字符, 我想显示一种警告弹出窗口,但是我无法显示弹出窗口。
问题是我们在打字时无法显示弹出窗口, 可能很多人都认为可以使用OnKeyListener或OnKeyDown。 但是,当这个词组成时,没有任何东西进入OnKeyListener或OnKeyDown, 所以,我们想要的时候不能显示弹出窗口。
有没有人有聪明的想法来解决这个问题?
答案 0 :(得分:1)
您应该可以从窗口小部件中移除焦点,并显示您的消息。
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
答案 1 :(得分:0)
OnKeyboardActionListener用于实现软件键盘。
正如您在使用软件键盘时发现的那样,OnKeyListener和OnKeyDown不会被调用。它们只有在使用硬件键盘时才会被调用,许多Android设备甚至都没有。
我假设你要做的是捕获在EditText区域中发生的关键事件。在这种情况下,为了处理软件键盘输入和硬件键盘输入,最好的办法是通过TextWatcher()方法注册addTextChangedListener。
请注意,在Android 2.1及更高版本的手机上,例如Nexus One,人们可以选择使用语音识别将文本输入EditText,而不是输入文字。当他们这样做时,你可以一次性输入完整的单词,甚至是完整的句子。因此,当内容发生更改时,您需要检查EditText字段的全部内容。