java - Android 不同颜色的圆形背景

标签 java android

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

Grid layout image

我使用背景布局来圆角:

<?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());
}

背景颜色似乎忽略了我用背景布局设置的边界,我得到了这个结果:

Background color ignoring boundaries image

让它为 RecycerView 中的每个项目都具有圆角和不同颜色的最佳方法是什么?

最佳答案

您使用的背景“布局”实际上根本不是布局;这是一个drawable资源。这意味着虽然可见边框是圆形的,但 View 本身仍然具有其原始形状。

当您以编程方式设置背景颜色时,它会替换以前具有圆角的可绘制对象并填充整个矩形 View 。为了在这些边界内具有圆角和纯色填充,您将需要修改您的可绘制对象本身。 <solid>标签应该适合这个目的。

要支持多种颜色,您可以为每种颜色拥有单独的可绘制资源(如果只有几个颜色,则很有用),或者您可以在基本可绘制对象上使用不同的色调。其他方法可参见this question .

关于java - Android 不同颜色的圆形背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618582/

相关文章:

android - Parse.com 检索整个数组 android

android - IntelliJ - Android 项目 - Gradle 刷新失败

java - java中如何删除数组中的索引

java - JSP 如何缩放图像?

java - Java中访客模式的通用实现

java - 将子类保存为父类(super class)类型并在 Java 中使用其方法

java - eclipse jsp - 无颜色、代码完成和错误检测

android - 中心域标签 Androidplot 条形图

android - 在按钮上,文本和可绘制对象在居中时距离太远

android - Android 4.2.2 SDK 使用的是什么版本的 Apache HttpClient?