0

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

“当硬件按键事件被调度到这个视图时,回调的接口定义。回调将在按键事件被分配给视图之前被调用。这只对硬件键盘有用;软件输入法没有义务触发这个监听器。”

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

4

1 回答 1

0

更新 9/12/2013
看起来我的旧答案只适用于某些软键盘,但不适用于其他软键盘。我尝试四处寻找替代方案,但找不到任何始终如一的工作。最后,我做了一个自定义键盘。幸运的是,我的键盘只需要数字,所以很容易创建。我按照本指南了解如何创建自定义键盘。
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);
    }
}
于 2013-08-19T23:41:23.197 回答