当前位置: 首页 > 知识库问答 >
问题:

Android 文本更改侦听器文本监视器() 关闭行为

谭奕
2023-03-14

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

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

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

我环顾四周,没有看到任何关于这方面的信息。所以我一定做错了什么,但我不确定是什么。

下面是我的实现。我试过了,都给了我相同的行为if(editText.getText(). toString(). isempty())

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

如果(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
  }
});

预先感谢

更新**** 找到答案,在这里解决了我的问题。文本监视程序事件被多次触发

共有1个答案

朱俊雅
2023-03-14

试试这个

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
  }
});
 类似资料:
  • 有人能提出什么解决办法吗?

  • 我想在我的中添加一种,当用户更改的值时,应用程序会在控制台上打印一些内容。 我搜索了一下,发现了以下非常类似的问题:将Listener值更改为JTextField 上述问题的答案非常清晰有效,但不幸的是,它只对(而不是)有用,因为它说您应该像这样使用DocumentListener: 但在JavaFX的文本字段中,您无法执行此操作。所以解决办法是什么? (用代码描述可能非常好,但如果不可能,任何提

  • 我需要一些帮助。我有一个s的。 我想检查值是否发生了变化。如果是,我想知道它是哪个文本字段。我知道我可以使用侦听器来执行此操作,但这只适用于单个侦听器。 我希望它在数组上工作并确定哪个文本字段已更改。 提前感谢!

  • 我正在开发一个Android聊天应用程序。一切运作良好,但除了一件事;我想设置一个布局的可见性消失,然后设置一个不同的布局可见时,用户开始输入编辑文本,就像在WhatsApp上实现的。但是我似乎想不明白。任何帮助都将不胜感激 基本上,我想做的是设置一个布局的可见性,该布局包含一个图像按钮,用于将图像上载到gone,然后显示一个布局,该布局包含一个图像按钮,用于在用户开始键入时将edittext中的

  • 我必须取编辑文本的值并将其除以1.21....错误在哪里 错误:

  • 当编辑文本上的回车键被按下时,我试图简单地向listview添加一些内容。我在按钮上也有一个点击监听器,它将调用相同的函数将单词添加到listview。按钮工作正常,直到我添加了文本监视程序。现在,如果我调用的函数在监听器中,如果我按回车键或按下按钮,整个应用程序就会崩溃。如果我从文本监视程序中删除类,那么如果我按下回车键,应用程序不会崩溃,但如果我按下按钮,它会崩溃。有什么想法吗?我已经很久没用