0

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

问题是我们不能在打字时显示弹出窗口,可能很多人都想到了一种利用 OnKeyListener 或 OnKeyDown 的方法。但是,当单词正在组合时,OnKeyListener 或 OnKeyDown 没有任何内容,因此,我们无法在需要时显示弹出窗口。

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

4

2 回答 2

1

您应该能够从小部件中移除焦点,并显示您的消息。

   InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);  
   imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0); 
于 2010-03-17T10:17:12.737 回答
0

OnKeyboardActionListener 用于实现软件键盘。

正如您所发现的,在使用软件键盘时,不会调用 OnKeyListener 和 OnKeyDown。他们只有在使用硬件键盘时才会被调用,而许多 Android 设备甚至都没有。

我假设您正在尝试做的是捕获在 EditText 区域中发生的关键事件。在这种情况下,为了同时处理软件键盘输入和硬件键盘输入,最好的办法是通过addTextChangedListener () 方法注册一个TextWatcher 。

请注意,在搭载 Android 2.1 及更高版本的手机(例如 Nexus One)上,人们可以选择使用语音识别将文本输入到 EditText 中,而不是键入文本。当他们这样做时,您可能会一次输入完整的单词,甚至完整的句子。因此,当内容发生变化时,您需要检查 EditText 字段的全部内容。

于 2010-03-17T13:49:11.543 回答