安卓如何检测"delete"键盘上的按钮按下删除单个字符?



我正在使用远程控制应用程序,并且需要检测用户何时按下空文本字段上的 <x删除按钮以发送此字符并从远程计算机中删除某些内容。

如何检测用户按<x删除Android键盘上的删除按钮?

我试图在关键的侦听器上进行广告,但这似乎不起作用。

final EditText edittext = (EditText) findViewById(R.id.editText);
edittext.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        Log.i("KEYCODE", "" + keyCode);
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                (keyCode == KeyEvent.KEYCODE_ENTER)) {
            // Perform action on key press
            return false;
        } else if (edittext.length() == 0) {
            if(keyCode == KeyEvent.KEYCODE_DEL) {
                //perform erase when the text field is empty
            }
        }
        return false;
    }
});

使用方法dispatchKeyevent:

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

(从这里偷来偷来)

我知道我迟到了,但希望这对别人有帮助。没有直接的方法可以使用侦听器来执行此操作,但是如果您查看OntextChanged侦听器的文档,您会发现这一点:

此方法被调用是为了通知您,在 s 中, count 字符从开始 start 刚刚替换了具有长度的旧文本

因此,如果是靠背,您将有以下条件:

s (可编辑视图)中, 0 字符开始于 start> start (取决于光标所在的位置)已更换了已替换已经替换了已有的旧文本长度之前(它的值通常为1,除非用户首先选择一些文本然后键入backspace)

因此,如果count == 0,您可以假设按下删除键。

您不能将View.OnKeyListener用于软件键盘。

view.onkeylistener:

接口定义将在此视图中分配到硬件密钥事件时调用回调。这仅对硬件键盘有用;软件输入方法没有义务触发此侦听器

来源:http://developer.android.com/reference/android/view/view.onkeylistener.html

最新更新