【问题标题】:Android TextChangedListener TextWatcher() off behaviorAndroid TextChangedListener TextWatcher() 关闭行为
【发布时间】:2015-12-09 17:09:27
【问题描述】:

我在编辑文本上使用 textChangedListener 来显示/隐藏浮动操作按钮。

一切都按预期工作。 如果编辑文本不为空则显示 fab,如果为空则隐藏 fab。

但是我注意到,在使用退格键删除输入的文本时,删除第一个空格会触发隐藏 fab,然后快速显示 fab,因为 editText 不为空。

我环顾四周,没有看到任何关于此的内容。 所以我一定是做错了什么,但我不确定是什么。

以下是我的实现。我已经尝试过并且都给了我相同的行为 if(editText.getText().toString().isEmpty())

if(editText.getText().toString().length()==0))

if(editText.getText().toString().equals("")

editText.addTextChangedListener(new TextWatcher() {
  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count)     {
    Log.d(TAG, "TEXT CHANGED onTextChanged" + editText.getText().toString());


    // TODO Auto-generated method stub
  }

  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    Log.d(TAG, "TEXT CHANGED beforeTextChanged" + editText.getText().toString());


    // TODO Auto-generated method stub
  }

  @Override
  public void afterTextChanged(Editable s) {
    Log.d(TAG, "TEXT CHANGED afterTextChanged" + editText.getText().toString());
   // s =  editText.getText().toString(); editText.getText().toString()
    if (s.toString().isEmpty()) {
      fab.setVisibility(View.INVISIBLE);
      fab.setAnimation(slideDownAnim);
      slideDownAnim.start();
    }else{
      fab.setVisibility(View.VISIBLE);
      fab.setAnimation(slideUpAnim);
      slideUpAnim.start();
    }
    // TODO Auto-generated method stub
  }
});

提前致谢

***更新**** 在这里找到了解决我的问题的答案。 TextWatcher events are being fired multiple times

【问题讨论】:

标签: android android-edittext textchanged


【解决方案1】:

试试这个

editText.addTextChangedListener(new TextWatcher() {
  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count)     {
    Log.d(TAG, "TEXT CHANGED onTextChanged" + editText.getText().toString());

    if (s.toString().isEmpty()) {
      fab.setVisibility(View.INVISIBLE);
      fab.setAnimation(slideDownAnim);
      slideDownAnim.start();
    }else{
      fab.setVisibility(View.VISIBLE);
      fab.setAnimation(slideUpAnim);
      slideUpAnim.start();
    }
  }

  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    Log.d(TAG, "TEXT CHANGED beforeTextChanged" + editText.getText().toString());


    // TODO Auto-generated method stub
  }

  @Override
  public void afterTextChanged(Editable s) {
    Log.d(TAG, "TEXT CHANGED afterTextChanged" + editText.getText().toString());
   // s =  editText.getText().toString(); editText.getText().toString()

    // TODO Auto-generated method stub
  }
});

【讨论】:

  • Deepak,感谢您的回复,但我已经尝试过了,但奇怪的行为仍然存在。奇怪的行为仅在第一个空格被删除后才存在。我想我可以尝试一些hacky尝试检查第一个空格的位置并在那里做一些事情以避免按钮再次隐藏和显示,但这似乎有点愚蠢。无论如何再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多