我正在使用TextWatcher
,我无法在TextWatcher.afterTextChange
事件中检测到 Backspace 键。我还希望在textView
事件中清除某些条件textWatcher
。
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
// I want to detect backspace key here
}
答案 0 :(得分:14)
要检测TextWatcher
中的退格,您可以检查传递到onTextChange
函数的变量计数(如果输入退格,计数将为0),如下所示:
@Override
public void onTextChanged(CharSequence cs, int start, int before, int count) {
if (react) {
if (count == 0) {
//a backspace was entered
}
//clear edittext
if(/*condition*/) {
react = false;
setText("");
react = true;
}
}
}
boolean
()函数需要react setText
,否则它将变为递归。希望这有帮助!
答案 1 :(得分:10)
KeyListener
可以满足您的两个条件。
mEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_DEL){
//on backspace
}
return false
}
});
同样在onKey()
内,您可以放置多个检查语句来检查条件,何时需要清除textView
。
编辑:由于 @RankoR 非常友好,请注意 onKeyListener()
仅适用于硬件键盘强>而不是软键盘。