13

我正在使用TextWatcher,但无法检测到事件中的Backspace关键。TextWatcher.afterTextChange我也想textView在某些情况下清除textWatcher事件。

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

2 回答 2

17

要检测 中的退格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() 函数需要反应,setText否则它会变得递归。希望这可以帮助!

于 2014-01-29T18:49:58.640 回答
15

AKeyListener可以满足你的两个条件。

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

于 2012-08-30T17:16:55.457 回答