在包含自定义setTint()
的{{1}}上调用ShapeDrawable
似乎对底层形状的颜色没有影响。
CustomShape.kt
Shape
用法
class CustomShape : Shape() {
private val paint = Paint()
private val path = Path()
init {
paint.isAntiAlias = true
}
override fun onResize(width: Float, height: Float) {
// update path
}
override fun draw(canvas: Canvas, paint: Paint) {
canvas.drawPath(path, this.paint)
}
}
答案 0 :(得分:1)
解决方案
使用val shape = CustomShape()
val drawable = ShapeDrawable(shape)
drawable.setTint(Color.RED) // not working
someView.background = drawable
提供的Paint
对象,该对象已经应用了反别名标志,并且将尊重您在draw()
上调用的任何方法。
问题是我正在创建并使用一个新的ShapeDrawable
对象,而不是使用Paint
中提供的对象。这样做的合理性是我需要打开抗锯齿功能,并且我想避免在draw()
方法中这样做。
另外,我最初是直接在draw
中给Paint
对象赋予颜色,然后才意识到让CustomShape
处理该颜色是更好/必要。