类似于10年前问的这个问题:banded background with two colors?
我需要创建一个drawable作为一个通用视图的背景,它有两个不同的矩形条纹颜色,就像一面旗帜。奖金,如果我可以使其中一个矩形有弯曲的角落。不幸的是,我需要动态地设置颜色,所以我不能在xml中定义这个drawable。如何在Kotlin中实现这一点?
我最好的猜测是这样的,但它不起作用:
background = LayerDrawable(
arrayOf(
GradientDrawable().apply {
shape = GradientDrawable.RECTANGLE
layout(0, 0, 100, 20)
background = styles.rootBackground
},
GradientDrawable().apply {
shape = GradientDrawable.RECTANGLE
cornerRadii = floatArrayOf(8f, 8f, 8f, 8f, 0f, 0f, 0f, 0f)
layout(0, 20, 100, 40)
color = styles.robotTextBackgroundColor //requires color state list ?!
}
)
)
1条答案
按热度按时间tv6aics11#
不幸的是,我需要动态地设置颜色,所以我不能在xml中定义这个drawable。
不,您可以将其作为XML可绘制的文件,将其扩展为代码,然后更改颜色。这比从头开始编写代码要容易得多。
但这需要将ID附加到图层列表项,您需要更改其颜色
下面是引用的post的演示:
R.drawable.test:
在这里,我们将
redRect
项的颜色从红色更改为绿色,然后将整个drawable设置为根视图背景:奖金,如果我可以使其中一个矩形有弯曲的角落。
在形状中使用
<corners>
标记,并定义半径: