检测TextWatcher中的退格

时间:2012-08-30 17:10:41

标签: android textwatcher

我正在使用TextWatcher,我无法在TextWatcher.afterTextChange事件中检测到 Backspace 键。我还希望在textView事件中清除某些条件textWatcher

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

2 个答案:

答案 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()仅适用于硬件键盘而不是软键盘。