在布局文件中更改可绘制形状的背景
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
,然后修改背景、颜色、方向,然后应用到视图。
这是我的可绘制圆形
<?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
,然后修改背景、颜色、方向,然后应用到视图。