Android - 有没有办法为软键盘触发onKeyListener?

时间:2013-08-17 00:23:22

标签: android

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

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

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

1 个答案:

答案 0 :(得分:0)

2013年9月12日更新
看起来我的旧答案只适用于某些软键盘而不适用于其他软键盘。 我试图寻找替代方案,找不到一贯有效的方法。最后,我制作了一个自定义键盘。幸运的是,我只需要键盘上的数字,因此很容易创建。我按照本指南介绍了如何创建自定义键盘 http://www.fampennings.nl/maarten/android/09keyboard/index.htm

旧答案
我四处搜索,看起来没有办法用软键盘上的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);
    }
}