gpt4 book ai didi

android - 在 Android 上使用数据绑定(bind)设置文本颜色

转载 作者:IT老高 更新时间:2023-10-28 23:18:44 29 4
gpt4 key购买 nike

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

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

Holder 类中的方法定义如下

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

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

最佳答案

我似乎将您提供的 int 解释为十六进制颜色,尽管此 setter 应该期待资源 ID 看起来很直观。

使用为每个可绑定(bind) View 生成的 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)}"
/>

编辑

为了向后兼容,您可以使用 ContextCompat。需要导入:

<layout>
<data>
<import type="android.support.v4.content.ContextCompat"/>
<variable name="data" type="com.whatever.myapp.MyModel"/>
...
</data>
...
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{data.text}"
android:textColor="@{ContextCompat.getColor(context, data.colorRes)}"
/>
</layout>

关于android - 在 Android 上使用数据绑定(bind)设置文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39910832/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com