监听软键盘中的删除键

最近因为项目需要,要监听软键盘中的删除键,在网上搜了大部分的说法,用onKeyListener,但是不知道为什么,设置后并没有效果,最后自己通过dispatchKeyEvent实现了,代码如下

@Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getKeyCode() ==KeyEvent.KEYCODE_DEL){
            //TODO anything
        }
        return super.dispatchKeyEvent(event);
    }
当然,仅重写上面的代码,程序将会运行两次dispatchKeyEvent方法,原因在于当键盘按下时,首先触发dispatchKeyEvent,然后触发 onUserInteraction,再触发onKeyDown方法,如果按下后立马松开,则仅有两步:先触发 dispatchKeyEvent,然后触发onUserInteraction,再onKeyUp。所以需要再if语句中再加上event.getAction() != KeyEvent.ACTION_UP,代码如下:

@Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_DEL && event.getAction() != KeyEvent.ACTION_UP){
            //TODO 
            }
        }
        return super.dispatchKeyEvent(event);
    }




你可能感兴趣的:(Android学习)