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

前端之家收集整理的这篇文章主要介绍了使用Android上的数据绑定设置文本颜色前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用数据绑定库设置TextView文本颜色
android:textColor="@{holder.getTitleColor(context,item)}"

Holder类中的方法定义如下

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

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

解决方法

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

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

A special variable named context is generated for use in binding expressions as needed. The value for context is the Context from the root View’s getContext().

用它来设置这样的颜色:

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{data.text}"
            android:textColor="@{context.getColor(data.colorRes)}"
            />

猜你在找的Android相关文章