Сейчас я переделываю свой старый 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 [].
Измените на это:
val colorDrawable = try {
ColorDrawable(Color.parseColor(color.hex))
} catch (e: Exception) {
e.printStackTrace()
ColorDrawable(Color.parseColor("#FFFFFF"))
}
Color.parseColor(color.hex) возвращает int, а не Drawable