如何挂钩关键事件

时间:2010-03-17 10:10:52

标签: android keyboard-events

我想限制EditText小部件的文本长度, 如果用户输入比有限长度更多的字符, 我想显示一种警告弹出窗口,但是我无法显示弹出窗口。

问题是我们在打字时无法显示弹出窗口, 可能很多人都认为可以使用OnKeyListener或OnKeyDown。 但是,当这个词组成时,没有任何东西进入OnKeyListener或OnKeyDown, 所以,我们想要的时候不能显示弹出窗口。

有没有人有聪明的想法来解决这个问题?

2 个答案:

答案 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字段的全部内容。