我想有一个edittext,根据它是否可编辑的事实来改变它的背景。
如果edittext是“可编辑的”,它将具有默认的edittext背景,如果不是,它将获得透明的背景(看起来像一个简单的textview)。
我做到了:

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

在编译或执行期间,它不会抛出任何异常,但是当变量“editable”被修改时,我的edittext似乎没有背景,也没有任何变化。
My variable 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}"

关于android - 数据绑定(bind)将android资源绑定(bind)到后台,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37348410/

10-11 01:42