Android布局状态条件

时间:2018-01-31 12:11:14

标签: android android-layout

我的视图中有一个复选框和一个EditText。 我想只在直接用布局条件检查CheckBox时启用我的editText:

 android:enabled="@{checkBox.isChecked}"

但我有编译错误。我怎么能这样做?

感谢的

2 个答案:

答案 0 :(得分:2)

您应该将edittext设置为启用false。在你的checkBox听众中做这样的事情:

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) 
    {
         if(compoundButton.isChecked){
                editText.setFocusable(true);
                editText.setFocusableInTouchMode(true);
                editText.setCursorVisible(true);
                editText.setEnabled(true);
    }else{
                editText.setFocusable(false);
                editText.setFocusableInTouchMode(false);
                editText.setCursorVisible(false);
                editText.setEnabled(false);
}

   }
    });

答案 1 :(得分:0)

xml在编译时加载,在生命周期onCreate()方法调用中。 之后,只有用户具有布局的可用性。 您正在为条件提供null,因为当您尝试查找其状态时,复选框甚至不会被初始化。 编写代码以查找复选框状态,并将其分配给onResume方法中的editext或textbox。

https://developer.android.com/guide/components/activities/activity-lifecycle.html

检查这一点以便更好地理解...