Java 不同颜色的Android圆形背景
我正在制作一个待办应用程序,我正在使用RecyclerView创建一个多网格布局,如下所示: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
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());
...
}