来自资源的android数据绑定颜色
是否可以使用android的数据绑定从xml引用颜色 这很好:来自资源的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: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}" .../>