数据绑定和 ColorStateList 选择器

Sam*_*Sam 1 android textcolor android-selector android-databinding android-text-color

我有一个回收器视图,我需要使用颜色选择器之一(具体取决于数据绑定中的值)来更改 TextView 颜色。

我有两个选择器:

颜色/selector_item_text.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white" android:state_checked="true" />
    <item android:color="@color/white" android:state_pressed="true" />
    <item android:color="@color/white" android:state_activated="true" />
    <item android:color="@color/black" />
</selector>
Run Code Online (Sandbox Code Playgroud)

颜色/selector_item_textwithspecial.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/pink" android:state_checked="true" />
    <item android:color="@color/pink" android:state_pressed="true" />
    <item android:color="@color/pink" android:state_activated="true" />
    <item android:color="@color/orange" />
</selector>
Run Code Online (Sandbox Code Playgroud)

我将它绑定到我的 TextView 上,如下所示:

<TextView android:text="@{data.displayPrice}"
    android:textColor="@{data.isSpecial ? @color/selector_item_textwithspecial : @color/selector_item_text}"
    style="@style/ProductPrice"/>
Run Code Online (Sandbox Code Playgroud)

问题是 TextView 颜色始终是橙色(如果有特殊)或黑色。选择永远不会改变颜色。但是,如果我删除数据绑定,它就会按预期工作。

例如,下面的代码将使 TextView 变成粉色(选中时)和橙色(未选中时)

<TextView android:text="@{data.displayPrice}"
    android:textColor="@color/selector_item_textwithspecial"
    style="@style/ProductPrice"/>
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

谢谢...

Via*_*ann 5

想通了,看这里

使用android:textColor="@{data.isSpecial ? @colorStateList/selector_item_textwithspecial : @colorStateList/selector_item_text}"