Android如何检测“删除”按钮按键盘上删除单个字符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android如何检测“删除”按钮按键盘上删除单个字符?相关的知识,希望对你有一定的参考价值。
我正在开发一个远程控制应用程序,需要检测用户何时按下空文本字段上的<x
删除按钮以发送此字符并从远程计算机中删除某些内容。
如何检测用户按下android键盘上的<x
删除按钮?
我试图在关键监听器上做广告,但这似乎不起作用。
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;
}
});
答案
我知道我迟到了,但希望这能帮助别人。使用监听器没有直接的方法可以做到这一点,但如果你查看onTextChanged Listener的文档,你会发现:
调用此方法是为了通知您,在s中,从start开始的计数字符刚刚替换了之前具有长度的旧文本。
因此,如果退格,您将遇到以下情况:
在s(可编辑视图)中,从开始处开始的0个字符(取决于光标所在的位置)已经替换了之前具有长度的旧文本(它的值通常为1,除非用户首先选择一些文本,然后点击退格)
因此,如果count == 0,您可以假设已按下删除键。
另一答案
您不能将View.OnKeyListener
用于软件键盘。
View.OnKeyListener:
将硬件键事件调度到此视图时要调用的回调的接口定义。这仅适用于硬件键盘;软件输入方法没有义务触发此监听器。
资料来源:http://developer.android.com/reference/android/view/View.OnKeyListener.html
另一答案
使用方法DispatchKeyEvent:
@Override public boolean dispatchKeyEvent(@NonNull KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
// ...
}
return super.dispatchKeyEvent(event);
}
以上是关于Android如何检测“删除”按钮按键盘上删除单个字符?的主要内容,如果未能解决你的问题,请参考以下文章