我正在制作一个待办事项应用程序,并使用 RecyclerView
来创建如下所示的多个网格布局:
我使用背景布局来圆角:
<?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>
我的问题是,每当我在适配器中动态更改颜色时,如下所示:
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());
}
背景颜色似乎忽略了我用背景布局设置的边界,我得到了这个结果:
让它为 RecycerView
中的每个项目都具有圆角和不同颜色的最佳方法是什么?
最佳答案
您使用的背景“布局”实际上根本不是布局;这是一个drawable
资源。这意味着虽然可见边框是圆形的,但 View 本身仍然具有其原始形状。
当您以编程方式设置背景颜色时,它会替换以前具有圆角的可绘制对象并填充整个矩形 View 。为了在这些边界内具有圆角和纯色填充,您将需要修改您的可绘制对象本身。 <solid>
标签应该适合这个目的。
要支持多种颜色,您可以为每种颜色拥有单独的可绘制资源(如果只有几个颜色,则很有用),或者您可以在基本可绘制对象上使用不同的色调。其他方法可参见this question .
关于java - Android 不同颜色的圆形背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618582/