数据绑定将 android 资源绑定到后台
Databinding bind android resource to background
我想要一个 EditText,根据它是否可编辑来改变它的背景。
如果 EditText 是 "editable",它将具有默认的 EditText 背景可绘制,如果不是,它将获得透明背景(看起来像一个简单的 textView)。
我已经做到了:
android:background="@{viewModel.editable ? android.R.drawable.edit_text : android.R.color.transparent}"
并且它在编译或执行期间不会抛出任何异常,但我的 EditText 似乎没有背景,并且在修改变量 "editable" 时没有任何变化。
我的变量 editable 是一个可绑定变量,定义如下:
@Bindable
boolean editable;
public boolean isEditable() {
return editable;
}
public void setEditable(boolean editable) {
this.editable = editable;
notifyPropertyChanged(BR.editable);
}
有人知道根据布尔值提供可绘制资源的线索吗?
根据 Custom Conversions 部分中的数据绑定库文档,您的三元表达式应该对资源常量使用 XML 表示法,而不是 Java 表示法:
android:background="@{viewModel.editable ? @android:drawable/edit_text : @android:color/transparent}"
我想要一个 EditText,根据它是否可编辑来改变它的背景。
如果 EditText 是 "editable",它将具有默认的 EditText 背景可绘制,如果不是,它将获得透明背景(看起来像一个简单的 textView)。
我已经做到了:
android:background="@{viewModel.editable ? android.R.drawable.edit_text : android.R.color.transparent}"
并且它在编译或执行期间不会抛出任何异常,但我的 EditText 似乎没有背景,并且在修改变量 "editable" 时没有任何变化。
我的变量 editable 是一个可绑定变量,定义如下:
@Bindable
boolean editable;
public boolean isEditable() {
return editable;
}
public void setEditable(boolean editable) {
this.editable = editable;
notifyPropertyChanged(BR.editable);
}
有人知道根据布尔值提供可绘制资源的线索吗?
根据 Custom Conversions 部分中的数据绑定库文档,您的三元表达式应该对资源常量使用 XML 表示法,而不是 Java 表示法:
android:background="@{viewModel.editable ? @android:drawable/edit_text : @android:color/transparent}"