在布局文件中更改可绘制形状的背景

Change background of drawable shape in the layout file

这是我的可绘制圆形

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    >
    <size
        android:width="30dp"
        android:height="30dp"/>
    <gradient
        android:angle="0"
        android:startColor="#FF63a34a"
        android:endColor="#FF477b36"
        android:type="linear"
        />
</shape>

我想使用不同颜色的可绘制圆形来创建此布局。

如果您使用 recyclerview 给这些物品充气,那么您可以参考这个。 您必须从您的可绘制对象中获取 GradientDrawable,然后根据您的条件和逻辑改变您的可绘制对象。您可以根据需要创建颜色阵列。

class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val imageView: ImageView = view.findViewById(R.id.myImage)
        fun bind() {
            val colors = IntArray(2)
            colors[0] = getRandomColor()
            colors[1] = getRandomColor()
            val backgroundDRw = ResourcesCompat.getDrawable(itemView.context.resources, R.drawable.my_drwable, null) as GradientDrawable
            backgroundDRw.mutate()
            backgroundDRw.colors = colors
            imageView.background = backgroundDRw
        }

        private fun getRandomColor(): Int {
            val rnd = Random()
            return Color.argb(255, rnd.nextInt(256), rnd.nextInt(56), rnd.nextInt(256))
        }
    }

总体思路是从您的可绘制对象中获取 GradientDrawable,然后修改背景、颜色、方向,然后应用到视图。