我不想听软键盘事件。我已经尝试过setOnKeyListener和setKeyListener,但他们都没有工作。有谁知道怎么听软键盘?
答案 0 :(得分:8)
假设您在较新的Android版本上使用软键盘,则KeyEvent reference中的以下内容解释了获取软键事件的主要限制。
“由于软输入法可以使用多种创造性的输入文字方式,无法保证软键盘上的任何按键都会产生关键事件:这由IME自行决定,实际上不鼓励发送此类事件。您不应该依赖于接收软输入法上任何键的KeyEvent。特别是,默认软件键盘永远不会向任何针对Jelly Bean或更高版本的应用程序发送任何键事件,并且只会将删除和返回键的某些按钮的事件发送到目标为Ice Cream Sandwich或更早版本的应用程序。请注意,无论版本如何,其他软件输入方法都可能永远不会发送关键事件。请考虑使用编辑器操作,例如IME_ACTION_DONE,如果您需要与软件键盘进行特定交互,因为它可以让用户更加了解应用程序对按键操作的反应。“
我认为使用TextWatcher界面可能就像你要达到你想要的那样接近。
答案 1 :(得分:2)
我遇到了同样的问题。但我所做的是使用已经完成的库。请检查此链接: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
}
});
这基本上是主要功能。