在textView的文本更改中更改按钮的可见性

时间:2019-04-23 14:14:53

标签: android xml

有什么办法可以改变按钮的可见性?

我尝试了以下代码。

<TextView
    android:id="@+id/order_amount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@android:color/white"                                
    android:textSize="@dimen/text_size_extra_larger"                                   
    android:layout_gravity="center_horizontal|center_vertical"
    android:gravity="center"
    tools:text="Amount" />

<Button
    android:id="@+id/clear_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end"
    android:layout_weight="1"                               
    android:background="@android:color/transparent"
    android:text="@string/clear"
    android:textAllCaps="true"
    android:textColor="@android:color/white"
    android:textSize="@dimen/text_size_normal"
    android:visibility='@={orderAmount.getText().equals("0.0") ? View.GONE : View.VISIBLE}' />

clear_button中的文本为“ 0.0”时,我想使order_amount消失。 我只想使用数据绑定表达式来完成此操作。

1 个答案:

答案 0 :(得分:0)

在科特林:

update_all

在Java中:

clear_button.visibility = View.GONE //View.INVISIBLE

选项1:您需要从动态设置TextView文本的任何地方调用此方法,例如:

clear_button.setVisibility(View.GONE); 

选项2:以编程方式将TextWatcher添加到您的TextView中,例如(Kotlin):

//... something something something
order_amount.text = amount
if(amount == "0.0") clear_button.visibility = View.GONE

在Java中:

order_amount.addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(text: Editable?) {
            if(text?.toString() == "0.0") clear_button.visibility = View.GONE
            else clear_button.visibility = View.VISIBLE
        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
        }
    })