使用Android上的数据绑定设置文本颜色

我正在尝试使用数据绑定库设置TextView文本颜色

 android:textColor="@{holder.getTitleColor(context, item)}" 

Holder类中的方法定义如下

 public int getTitleColor(Context context, Item item) { ... } 

无论我是否返回颜色int( @ColorInt )或颜色资源( @ColorRes ),它都会将文本绘制为纯白色。 我究竟做错了什么?

我似乎提供的int被解释为hex颜色,即使这个setter应该期望资源ID看起来很直观。

使用为每个可绑定视图生成的Context参考,并使用它将资源ID转换为您指向的颜色,如DataBinding Dev Guide中所述 :

根据需要生成名为context的特殊variables以用于绑定expression式。 context的值是来自根View的getContext()的Context。

用它来设置这样的颜色:

   

使用BindingAdapter创建方法

 @BindingAdapter({"bind:color"}) public static void setFont(TextView textView, Item item) { textView.setTextColor(); } 

并从xml调用它

 app:color="@{item}"