在RecyclerView上更改CardBackgroundColor

时间:2019-04-29 12:09:03

标签: android background-color cardview

我在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?

2 个答案:

答案 0 :(得分:1)

首先,您需要提供其他部分作为透明或其他颜色,以避免出现颜色重复渲染问题。其次,您必须将上下文从您的活动或片段传递到适配器,并且该上下文将用于获取颜色,如下所示。

if (elem.getID() == items[position].getPriority())
    {
        holder.mCard.setCardBackgroundColor(ContextCompat.getColor(mContext, [first color]))  
    } else {
        holder.mCard.setCardBackgroundColor(ContextCompat.getColor(mContext,[second color]))
    }

答案 1 :(得分:0)

尝试将"#c2c2c2"替换为"#ffc2c2c2",以确保您provide a correct alpha使用背景色。在android上,在开头添加的这个额外字节代表颜色的alpha:

#ffc2c2c2

  • ff:alpha
  • c2:红色
  • c2:绿色
  • c2:蓝色