我的代码中有一部分包含以下代码:
linearLayout.setBackgroundColor(Color.RED);
在另一部分,我想获取设置的背景颜色,类似于:
linearLayout.getBackgroundColor();
但是并没有这样的方法,只有这种方法:
Drawable drawable = linearLayout.getBackground();
我该如何获取Drawable的颜色?(我不想扩展LinearLayout并手动存储背景颜色等)
试试这个:
((ColorDrawable)linearLayout.getBackground()).getColor();
试试看:
int color = Color.TRANSPARENT;
Drawable bg = view.getBackground();
if (bg instanceof ColorDrawable){
color = ((ColorDrawable) bg).getColor();
}
Drawable background = linearLayout.getBackground();
if (background instanceof ColorDrawable) {
Color color = ((ColorDrawable) background).getColor();
}
尝试:
((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));
}
}