Java 不同颜色的Android圆形背景

Java 不同颜色的Android圆形背景,java,android,Java,Android,我正在制作一个待办应用程序,我正在使用RecyclerView创建一个多网格布局,如下所示: public void onBindViewHolder( ViewHolder holder, int position) { holder.timee.setBackgroundColor(task.get(position).getColor()); holder.timee.setTextColor(Color.WHITE); holder.grid.setBackground

我正在制作一个待办应用程序,我正在使用RecyclerView创建一个多网格布局,如下所示:

public void onBindViewHolder( ViewHolder holder, int position) {
   holder.timee.setBackgroundColor(task.get(position).getColor());
   holder.timee.setTextColor(Color.WHITE);
   holder.grid.setBackgroundColor(Color.WHITE);
   holder.namee.setTextColor(task.get(position).getColor());
}
我正在使用背景布局来圆角:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="6dp"  />
    <corners android:radius="20dp"/>
</shape>
背景色似乎忽略了我用背景布局设置的边界,我得到了以下结果:


要使RecycerView中的每个项目都具有圆角和不同颜色,最好的方法是什么?

您使用的背景布局实际上根本不是布局;这是一种可提取的资源。这意味着,尽管可见边界是圆形的,但视图本身仍具有其原始形状

当以编程方式设置背景色时,它将替换先前具有圆角并填充整个矩形视图的可绘制颜色。为了在这些边界内同时具有圆角和纯色填充,您需要修改可绘制图形本身。标签应适合此用途


要支持多种颜色,您可以为每种颜色提供单独的可绘制资源(如果只有两种颜色,则很有用),也可以在基本可绘制颜色上使用不同的色调。其他方法可以在上找到。

这并不能直接回答您的问题,但它提供了一种我发现更容易管理的替代方法

当我需要圆角视图时,我倾向于使用CardView,只需删除立面。然后,我可以像其他任何编程方式一样修改布局:

<android.support.v7.widget.CardView
    android:layout_width="50dp"
    android:layout_height="50dp"
    card_view:cardBackgroundColor="#5500FF00"
    card_view:cardCornerRadius="10dp"
    card_view:cardElevation="0dp" />
public void onBindViewHolder( ViewHolder holder, int position) {
   ...
   holder.cardView.setCardBackgroundColor(task.get(position).getColor());
   ...
}