Как я могу исправить GradientDrawable не может быть приведен к проблеме ColorDrawable?

У меня есть фрагмент кода, чтобы показать вам ниже, и я пытаюсь изменить фон представления (v). Я получу цветовой код от TextView(перетащил) и изменить View(v) фон с помощью этого кода. Но я получаю ошибку, как указано выше. Как я могу это исправить? В чем проблема? Благодарю.

ColorDrawable cd = (ColorDrawable)dragged.getBackground();
    int colorCode = cd.getColor();
    v.setBackgroundColor(colorCode);

1 ответ

Если вы хотите просто назначить фон одного вида другому, а не только цвет, вы можете использовать следующий код

Drawable drawable = dragged.getBackground();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
    v.setBackgroundDrawable(drawable );
}else{
    v.setBackground(drawable);
}

Однако, если вы хотите получить только цвет, вам придется заранее определить, какие типы рисования назначаются для просмотра. Затем используйте instanceof, чтобы узнать, как получить цвет фона для соответствующего объекта.

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