Исключение приведения класса при создании LayerDrawable в котлине

Сейчас я переделываю свой старый java-код на kotlin, и у меня есть одна проблема, мне нужен kotlin-аналог этого кода:

Drawable[] layers = new Drawable[]{
    colorDrawable,
    border
};

LayerDrawable drawable = new LayerDrawable(layers);

В котлине у меня сейчас:

val border = GradientDrawable()
border.shape = GradientDrawable.RECTANGLE
border.setStroke(CommonsUtils.dpToPx(holder.itemView, 1), Color.parseColor("#DEDEDE"))
border.cornerRadius = CommonsUtils.dpToPx(holder.itemView, 2).toFloat()

val colorDrawable = try {
    Color.parseColor(color.hex)
} catch (e: Exception) {
    e.printStackTrace()
    ColorDrawable(Color.parseColor("#FFFFFF"))
}

val layers = arrayOf(colorDrawable, border)
val drawable = LayerDrawable(layers as Array<out Drawable>)

Но arrayOf возвращает Array of «Any» вместо Array из «Out Drawable», и у меня есть исключение приведения класса Object [] в Drawable [].

1
0
201
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Измените на это:

val colorDrawable = try {
    ColorDrawable(Color.parseColor(color.hex))
} catch (e: Exception) {
    e.printStackTrace()
    ColorDrawable(Color.parseColor("#FFFFFF"))
}

Color.parseColor(color.hex) возвращает int, а не Drawable

Другие вопросы по теме