检测TextWatcher中的退格

Jay*_*jar 9 android textwatcher

我正在使用TextWatcher,我无法检测事件中的Backspace密钥TextWatcher.afterTextChange.我还希望textView在某些情况下明确textWatcher事件.

public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
    // I want to detect backspace key here
}
Run Code Online (Sandbox Code Playgroud)

小智 15

要检测退格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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

()函数boolean需要反应,setText否则它会变为递归.希望这可以帮助!

  • 当s.length()= 0时没有文本更改时,它不会给出回调,按下任何键都没有回调. (12认同)
  • 当按下后退按钮并且`EditText`中没有字符时,`onTextChanged`没有收到回调.不知道为什么这个答案甚至会在这里退出! (5认同)

Swa*_*yam 10

A KeyListener可以满足您的两个条件.

mEditText.setOnKeyListener(new OnKeyListener() {                 
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
           if(keyCode == KeyEvent.KEYCODE_DEL){  
             //on backspace
             }
    return false        
        }
});
Run Code Online (Sandbox Code Playgroud)

同样在onKey()你的内部,你可以放置多个检查语句来检查条件,当你想要清除时textView.

编辑:由于@RankoR非常友好地指出,请记住onKeyListener()只适用于硬件键盘而不是软键盘.

  • OnKeyListener仅适用于HW键盘. (4认同)