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

问题描述 投票:0回答:2

我创建了一个形状背景,但setColor函数不支持旧的API(比Android Lollipop更老,即Kitkat,ICS)。有没有其他方法可以实现这一目标。

这是我目前的代码:

val shape = GradientDrawable()
            shape.shape = GradientDrawable.OVAL
            shape.setStroke(strokeWidth!!,strokeColor!!)
            shape.setColor(selectedColor!!)
            p0.imageView.background = shape
android layout background shapes
2个回答
0
投票

setColor有两种GradientDrawable方法

首先,在API级别1中添加

public void setColor(int argb)

其次,在API级别21中添加

public void 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
  }

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
            }
© www.soinside.com 2019 - 2024. All rights reserved.