如何在Android中获取Drawable的颜色

5

我的代码中有一部分包含以下代码:

linearLayout.setBackgroundColor(Color.RED);

在另一部分,我想获取设置的背景颜色,类似于:

linearLayout.getBackgroundColor();

但是并没有这样的方法,只有这种方法:
Drawable drawable = linearLayout.getBackground();

我该如何获取Drawable的颜色?(我不想扩展LinearLayout并手动存储背景颜色等)

4个回答

13

试试这个:

((ColorDrawable)linearLayout.getBackground()).getColor();

3
尝试这个:

试试看:

int color = Color.TRANSPARENT;
Drawable bg = view.getBackground();
if (bg instanceof ColorDrawable){
   color = ((ColorDrawable) bg).getColor();
}

2
您可以在类似以下代码中使用ColorDrawable:
Drawable background = linearLayout.getBackground();
if (background instanceof ColorDrawable) {
        Color color = ((ColorDrawable) background).getColor();
}

0

尝试:

((ColorDrawable) linearLayout.getBackground()).getColor();

顺便说一下,我是通过查看View.java的源代码来解决这个问题的:

public void setBackgroundColor(int color) {
    if (mBackground instanceof ColorDrawable) {
        ((ColorDrawable) mBackground.mutate()).setColor(color);
        computeOpaqueFlags();
        mBackgroundResource = 0;
    } else {
        setBackground(new ColorDrawable(color));
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接