【发布时间】:2014-10-08 20:22:18
【问题描述】:
我不想听软键盘事件。我试过 setOnKeyListener 和 setKeyListener ,它们都不起作用。有人知道怎么听软键盘吗?
【问题讨论】:
-
你知道editText.addTextChangedListener()
标签: java android android-softkeyboard keylistener
我不想听软键盘事件。我试过 setOnKeyListener 和 setKeyListener ,它们都不起作用。有人知道怎么听软键盘吗?
【问题讨论】:
标签: java android android-softkeyboard keylistener
假设您在较新的 Android 版本上使用软键盘,那么来自 KeyEvent reference 的以下简介解释了获取软键事件的关键限制。
“由于软输入法可以使用多种创造性的文本输入方式,不能保证软键盘上的任何按键都会产生按键事件:这由 IME 自行决定, 实际上不鼓励发送此类事件。您永远不应该依赖接收 KeyEvents 来获取软输入法上的任何键。特别是,默认的软键盘永远不会向任何针对 Jelly Bean 或更高版本的应用程序发送任何键事件,并且只会向面向 Ice Cream Sandwich 或更早版本的应用程序发送某些按下删除键和返回键的事件。请注意,无论版本如何,其他软件输入法可能永远不会发送键事件。考虑使用编辑器操作,例如IME_ACTION_DONE 如果您需要与软件键盘进行特定交互,因为它可以让用户更清楚地了解您的应用程序对按键的反应。”
我认为使用TextWatcher 界面可能与您想要的一样接近。
【讨论】:
我遇到了同样的问题。但是我所做的是使用了一个已经完成的库。检查此链接:androidLibrary
只需按照步骤操作即可。导入库,然后使用提供给您的代码。
您只需要导入以下依赖项:
dependencies {
compile 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.0.0'
}
并实现这个方法:
KeyboardVisibilityEvent.setEventListener(
getActivity(),
new KeyboardVisibilityEventListener() {
@Override
public void onVisibilityChanged(boolean isOpen) {
// some code depending on keyboard visiblity status
}
});
这是基本的主要功能。
【讨论】: