为什么具有自定义背景的 RecyclerView 项目的边框半径消失了?

Why did the border radius disappear for an RecyclerView item with a custom background?

我在摸索Android发展,有时我有初学者的问题。现在我遇到了创建具有不同背景颜色的 RecyclerView 项目的问题。我创建了一个简单的 RecyclerView items list 首先,我为所有项目设置一个背景(浅绿色)。 然后我决定为每个项目设置一个单独的背景。这是我在适配器文件中的做法:

override fun onBindViewHolder(holder: ChapterListAdapter.ViewHolder, position: Int) {
    holder.chapter_item.text = chapter_titles[position]
    holder.chapter_details.text = chapter_descrs[position]
    holder.chapter_image.setImageResource(chapter_images[position])

    when(position){
        0 -> holder.chapter_card.setBackgroundColor(Color.parseColor("#ff5668"))
        1 -> holder.chapter_card.setBackgroundColor(Color.parseColor("#41d5e2"))
        2 -> holder.chapter_card.setBackgroundColor(Color.parseColor("#4d53e0"))
        3 -> holder.chapter_card.setBackgroundColor(Color.parseColor("#ff8e36"))
    }
}

它确实有效,虽然这可能不是正确的方法,但它确实有效。但是,存在一个问题。在屏幕截图中,您可以看到最后一项具有边框半径。我为 card_layout.xml 中的元素设置了 cardCornerRadius 值,出于某种原因,当我为项目分配自定义颜色时,该值消失了。这可以在屏幕截图中看到。具有浅绿色背景的最后一个元素具有边框半径(我没有为该元素分配自定义背景颜色值)并且具有分配自定义颜色的前四个元素没有边框半径。

请告诉我为什么会发生这种情况以及如何解决它。我需要保留所有元素的边框半径。

我很高兴我自己喜欢这个错误。为了设置项目背景颜色,我使用了 setBackgroundColor 但在我的情况下它不正确。在我的例子中,我必须使用 setCardBackgroundColor,因为我为 CardView 设置了背景。现在我的代码看起来是:

override fun onBindViewHolder(holder: ChapterListAdapter.ViewHolder, position: Int) {
    holder.chapter_item.text = chapter_titles[position]
    holder.chapter_details.text = chapter_descrs[position]
    holder.chapter_image.setImageResource(chapter_images[position])

    when(position){
        0 -> {
            holder.chapter_card.setCardBackgroundColor(Color.parseColor("#ff5668"))
        }
        1 -> {
            holder.chapter_card.setCardBackgroundColor(Color.parseColor("#41d5e2"))
        }
        2 -> {
            holder.chapter_card.setCardBackgroundColor(Color.parseColor("#4d53e0"))
        }
        3 -> {
            holder.chapter_card.setCardBackgroundColor(Color.parseColor("#ff8e36"))
        }
    }
}

而且效果很好。