0

当用户在 TextView 字段上键入时,我需要将按钮动态设置为“可见”或“消失”。通过使用下面的语句,我已经能够在按下 Enter 时完成它,但是如果按钮在用户键入或删除文本内容时立即可见或消失,那就太好了。有什么建议吗?

binding.textField.setOnEditorActionListener { v, actionId, event -> 
    if (v.text.toString().trim().isEmpty()){
        binding.button.visibility = View.GONE
    } else{
        binding.button.visibility = View.VISIBLE
    }

    return@setOnEditorActionListener true
}

提前感谢您的关注!罗德里戈·托马兹。

4

3 回答 3

2

您可以addTextChangedListener在您的 EditText 上使用。

像这样:

binding.textField.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {

            if (editable.toString().trim().isEmpty()){
               binding.button.visibility = View.GONE
            } else{
               binding.button.visibility = View.VISIBLE
            }

        }
    });

希望有所帮助:)

于 2020-06-16T05:37:39.893 回答
0

您应该将 textchangelistner 添加到您的 editext 并在文本更改时隐藏按钮

binding.textField.addTextChangedListener(new TextWatcher() {

       @Override
       public void afterTextChanged(Editable s) {}

       @Override    
       public void beforeTextChanged(CharSequence s, int start,
         int count, int after) {
       }

       @Override    
       public void onTextChanged(CharSequence s, int start,
         int before, int count) {
        binding.button.visibility = View.GONE
       }
      });
于 2020-06-16T05:36:11.123 回答
0

Kotlin 提供了对覆盖函数的简化访问。这是我的最终(工作)实现,仅供参考:

binding.textField.doAfterTextChanged { text: Editable? ->
    if (text.toString().trim().isEmpty()){
        binding.button.visibility = View.GONE
    } else{
        binding.button.visibility = View.VISIBLE
    }
于 2020-06-18T18:38:30.307 回答