在软键盘android上听每个关键事件

时间:2014-08-15 02:59:17

标签: java android android-softkeyboard keylistener

我不想听软键盘事件。我已经尝试过setOnKeyListener和setKeyListener,但他们都没有工作。有谁知道怎么听软键盘?

2 个答案:

答案 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
            }
        });

这基本上是主要功能。