数据绑定将android ressource绑定到后台

时间:2016-05-20 13:48:48

标签: android android-drawable android-databinding

我希望有一个EditText可以根据它是否可编辑来改变它的背景。

如果EditText是"可编辑",它将具有默认的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);
}

有人对根据布尔值提供可绘制资源有任何线索吗?

1 个答案:

答案 0 :(得分:4)

根据Custom Conversions部分中的数据绑定库文档,您的三元表达式应使用XML表示法来表示资源常量,而不是Java表示法:

android:background="@{viewModel.editable ? @android:drawable/edit_text : @android:color/transparent}"