Создайте фон фигуры программно для старых API - PullRequest
0 голосов
/ 11 февраля 2019

Я создал фон фигуры, но функция setColor этого не поддерживает более старый API (более старый, чем Android Lollipop, например Kitkat, ICS).Есть ли другой способ, которым я могу достичь этого.

Это мой текущий код:

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

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

@ Кишоре Спасибо за ваш ответ, но, к сожалению, это не сработало.Поэтому я попытался использовать shapeDrawable и Booyah!

            val oval = ShapeDrawable(OvalShape())
            oval.paint.color = selectedColor!!
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                p0.imageView.background = oval
            }
0 голосов
/ 11 февраля 2019

Существует два метода setColor для GradientDrawable

Во-первых, добавлено на уровне API 1

public void setColor (int argb)

Во-вторых, добавлено на уровне API 21

public void setColor (ColorStateList colorStateList)

Solution !!

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
  }
...