以编程方式为较旧的API创建形状背景

时间:2019-02-11 12:41:03

标签: android layout background shapes

我已经创建了形状背景,但是此功能的setColor不支持较早的API(比Android Lollipop(即ICS,Kitkat)更早)。还有其他方法可以实现这一目标。

这是我当前的代码:

val shape = GradientDrawable()
            shape.shape = GradientDrawable.OVAL
            shape.setStroke(strokeWidth!!,strokeColor!!)
            shape.setColor(selectedColor!!)
            p0.imageView.background = shape

2 个答案:

答案 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
            }