监听Android软键盘的每个按键事件

4

我想监听软键盘事件。我已经尝试使用setOnKeyListener和setKeyListener,但都不起作用。有人知道如何监听软键盘吗?


1
你知道关于editText.addTextChangedListener()的内容吗? - Nabin
2个回答

12
假设您正在使用较新版本的Android软键盘,则来自KeyEvent reference的以下简介解释了获取软键事件时的键限制。
"由于软输入方法可以使用多种创新的文本输入方式,不能保证软键盘上的任何按键都会生成键事件:这取决于IME的酌情权,并且事实上不建议发送此类事件。您永远不应该依赖于从软输入法接收任何按键的KeyEvents。特别是,默认软件键盘永远不会向任何针对Jelly Bean或更高版本的应用程序发送任何键事件,并且仅会向针对Ice Cream Sandwich或更早版本的应用程序发送某些删除和返回键按下的事件。请注意,其他软件输入方法可能永远不会发送键事件,无论版本如何。如果需要与软键盘进行特定交互,请考虑使用编辑器操作,例如IME_ACTION_DONE,因为它可以更清楚地向用户显示您的应用程序将如何响应按键。"
我认为使用TextWatcher接口可能是您所需的最接近的东西。

1
我遇到了同样的问题。但是我使用了一个已经完成的库。请查看此链接: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
            }
        });

这基本上是主要函数。

1
请纠正我,但您的答案如何解决问题? 问题:“在Android软键盘上监听每个按键事件” 您的答案:“这是一个库,可以告诉您软键盘何时可见” - Ariel Yust

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接