来自资源的android数据绑定颜色

来自资源的android数据绑定颜色,android,data-binding,colors,resources,android-databinding,Android,Data Binding,Colors,Resources,Android Databinding,是否可以使用android的数据绑定从xml引用颜色 这很好: android:textColor="@{inputValue == null ? 0xFFFBC02D : 0xFFFFEB3B}" 但这并不是: android:textColor="@{inputValue == null ? @color/red : @color/blue}" 此间报道: *编辑* 事实证明,只有在边缘情况下才会出现id问题/bug。我的xml: <TextView and

是否可以使用android的数据绑定从xml引用颜色

这很好:

android:textColor="@{inputValue == null ? 0xFFFBC02D : 0xFFFFEB3B}"
但这并不是:

android:textColor="@{inputValue == null ? @color/red : @color/blue}"
此间报道:

*编辑*

事实证明,只有在边缘情况下才会出现id问题/bug。我的xml:

    <TextView
        android:id="@+id/input_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{inputValue}"
        android:textColor="@{showAsEmpty ? @color/registerInputEmpty : @color/registerInputSet}"
        tools:text="Select to edit"/>

问题在于inputValue参数和input_值id。它们在数据绑定中成为同一个inputValue字段。这只是设置自定义颜色时的问题。谷歌的一个错误,应该在下一次更新中修复。

你可以做到:)


是的,您可以参考颜色:

<TextView android:textColor="@{inputValue == null ? @color/red : @color/blue}" .../>

颜色资源以整数形式加载。如果属性需要可绘制并接收整数,则会将其转换为可绘制颜色。例如:

<View android:background="@{hasError ? @color/errorBg : @color/normalBg}" .../>


如果必须引用资源ID,请使用R值并记住导入R。这很少见,但有些setter使用资源ID而不是值。这在框架视图中并不常见,因为通常会有一些setter接受资源值和资源id,但您可以在自定义视图中找到它。

这是一个google错误:id和参数不能具有相同的名称:parameter inputValue和View id@id/input\u value。它们在数据绑定中成为相同的inputValue字段。这只是设置自定义颜色时的问题。谷歌的一个错误,应该在下一次更新中修复。

我必须显式导入R。事实上,我认为它显示了错误的颜色,无论我把它放在哪里,例如“红色”和“绿色”,它总是看起来偏蓝(蓝色的不同深浅)。它看起来偏蓝是因为
R.color。红色
不是一种颜色,它是颜色ID。您必须通过
资源
上下文兼容
类来处理该ID。出现了一些问题。我猜您没有定义
红色
蓝色
颜色资源。它应该与android:textColor=“@color/red”
android:textColor=“@color/blue”
一起使用,所以请检查一下。最后,错误是什么。我在问题中添加了更多信息。您的第一行不起作用,它在编译时给出一个错误。请参阅我的最新问题。
<View android:background="@{hasError ? @color/errorBg : @color/normalBg}" .../>