我的RecyclerView上有以下代码:
class TaskViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener
{
var mId: TextView = v.task_id
var mDescription: TextView = v.task_description
var mCard: CardView = v.task_card
var mView: View = v
}
override fun onBindViewHolder(holder: TaskViewHolder, position: Int)
{
// Initialize ViewHolder content
holder.mId.text = items[position].getID().toString()
holder.mDescription.text = items[position].getDescription()
holder.mTask = items[position]
for (elem in priorities)
{
if (elem.getID() == items[position].getPriority())
{
holder.mCard.setCardBackgroundColor(Color.parseColor("#c2c2c2"))
break
}
}
}
我不知道为什么,但CardView backgroundColor没有变化。
如果我使用以下代码,它可以正常工作:
holder.mCard.setCardBackgroundColor(ContextCompat.getColor(holder.mView.context, R.color.priority3))
我应该怎么做以编程方式设置CardBackgroundColor?
首先,您需要提供其他部分作为透明或其他颜色,以避免颜色重复渲染问题。第二,你必须将你的活动或片段的上下文传递给适配器,并且该上下文将用于获得如下所示的颜色。
if (elem.getID() == items[position].getPriority())
{
holder.mCard.setCardBackgroundColor(ContextCompat.getColor(mContext, [first color]))
} else {
holder.mCard.setCardBackgroundColor(ContextCompat.getColor(mContext,[second color]))
}
尝试用"#c2c2c2"
替换"#ffc2c2c2"
,以确保你provide a correct alpha的背景颜色。在android上,在开头添加的这个额外字节表示颜色的alpha:
#ffc2c2c2
ff
:alphac2
:红色c2
:绿色c2
:蓝色