如何在RecyclerView中使用getColor方法?

4

我正在尝试在RecycleView Adapter中使用资源中的颜色

override fun onBindViewHolder(holder: NavlogViewHolder, position: Int) {
    holder.myTextView.setBackgroundColor(R.color.magenta)

这会导致错误:"应该传递已解析的颜色而不是资源id",颜色也不应该是这样的。这也是错误的:
holder.myTextView.setBackgroundColor(getResources.getColor(R.color.magenta))
holder.myTextView.setBackgroundColor(context.resources.getColor(R.color.magenta))

我可以通过创建局部变量来获取颜色,例如:
val color = "#f7f7f7"
holder.myTextView.setBackgroundColor(Color.parseColor(color))

但是我更喜欢从colors.xml中获取颜色,如何正确地实现?


这可能是因为该函数不期望颜色资源的ID,而是期望一个RGB三元组的整数。尝试将上下文传递给构造函数,并使用ContextCompat,例如ContextCompat.getColor(context, R.color.magenta); - esQmo_
2个回答

7
val myColor = ContextCompat.getColor(holder.myTextView.context, R.color.magenta)
holder.myTextView.setBackgroundColor(myColor)

1
我错过了可以传递TextView上下文的事情。这很有效。谢谢! - Artyum

3

如果有人在寻找Java方面的答案,你可以这样做:

// get the color
int color = ContextCompat.getColor(view.getContext(),R.color.myColor);
//OR
int color = ContextCompat.getColor(itemview.getContext(),R.color.myColor);
// set the color
view.setBackgroundColor(color);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接