Android 安卓-有没有一种方法可以触发软键盘的onKeyListener?

Android 安卓-有没有一种方法可以触发软键盘的onKeyListener?,android,Android,开发者参考提到OnKeyListener仅适用于硬件密钥事件: “将硬件键事件分派到此视图时要调用的回调的接口定义。将在将键事件提供给视图之前调用回调。这仅对硬件键盘有用;软件输入方法没有义务触发此侦听器。” 但我想知道是否有办法用软键盘触发它?我知道它确实会触发某些设备,但并不一致。更新9/12/2013 看起来我以前的答案只在一些软键盘上有效,而在其他键盘上无效。 我试着四处寻找一个替代方案,但找不到任何能持续工作的方案。最后,我做了一个定制键盘。幸运的是,我的键盘只需要数字,所以很容易创建

开发者参考提到OnKeyListener仅适用于硬件密钥事件:

“将硬件键事件分派到此视图时要调用的回调的接口定义。将在将键事件提供给视图之前调用回调。这仅对硬件键盘有用;软件输入方法没有义务触发此侦听器。”


但我想知道是否有办法用软键盘触发它?我知道它确实会触发某些设备,但并不一致。

更新9/12/2013
看起来我以前的答案只在一些软键盘上有效,而在其他键盘上无效。 我试着四处寻找一个替代方案,但找不到任何能持续工作的方案。最后,我做了一个定制键盘。幸运的是,我的键盘只需要数字,所以很容易创建。我按照本指南介绍了如何创建自定义键盘。

旧答案
我四处搜索,似乎没有办法用onKeyListener为软键盘监听按键。但是,我可以扩展EditText并重写onKeyUp(),这很好

public class CustomEditText extends EditText
{
    public CustomEditText(Context context)
    {
        super(context);
    }

    public CustomEditText(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    public CustomEditText(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event)
    {
        // Intercept keys here
        return super.onKeyUp(keyCode, event);
    }
}