如何修复GradientDrawable无法转换为ColorDrawable问题?

时间:2014-02-19 12:06:34

标签: android android-background colordrawable

我有一个代码片段向您展示,我正在尝试更改视图(v)背景。我会从TextView(拖动)中获取颜色代码,并使用此代码更改View(v)的背景。但是如上所示,我收到错误。我该如何解决?问题出在哪儿?感谢。

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

1 个答案:

答案 0 :(得分:0)

如果您只想将一个视图的背景分配给另一个视图而不仅仅是颜色,您可以使用以下代码

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

但是,如果您只想获得颜色,则必须事先确定要分配哪些类型的可绘制视图。然后使用instanceof来处理如何为相应的drawable获取背景颜色。