我已经创建了形状背景,但是此功能的setColor
不支持较早的API(比Android Lollipop(即ICS,Kitkat)更早)。还有其他方法可以实现这一目标。
这是我当前的代码:
val shape = GradientDrawable()
shape.shape = GradientDrawable.OVAL
shape.setStroke(strokeWidth!!,strokeColor!!)
shape.setColor(selectedColor!!)
p0.imageView.background = shape
答案 0 :(得分:0)
setColor
有两种GradientDrawable
方法
首先,在API级别1中添加
公共无效setColor(int argb)
第二,在API级别21中添加
公共无效setColor(ColorStateList colorStateList)
解决方案!
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
shape.setColor(ContextCompat.getColor(this,R.color.colorAccent)) // your selectedColor
}else {
shape.setColor(Color.parseColor("#D81B60")) // your selectedColor
}
答案 1 :(得分:0)
@Kishore谢谢您的答复,但遗憾的是它没有用。所以我尝试使用shapeDrawable
和booyah!
val oval = ShapeDrawable(OvalShape())
oval.paint.color = selectedColor!!
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
p0.imageView.background = oval
}