我想制作一个if语句,我将比较布局背景颜色的颜色,如下所示:
RelativeLayout screen = (RelativeLayout) findViewById (R.id.screen);
if(screen.getBackgroundColor() == "#FFFFFFFF"){
//do something...
}
else{
//do something else...
}
我无法找到如何获得背景颜色。我通过以下方式设置颜色:screen.setBackgroundColor(Color.parseColor("#000000"));
答案 0 :(得分:3)
没有直接的getBackgroundColor()
,但如果你真的需要知道颜色值,你应该检索视图的Paint object并从中获取颜色:
Paint viewPaint = ((PaintDrawable) view.getBackground()).getPaint();
int colorARGB = viewPaint.getColor();
注意这也包含alpha,所以要小心你的比较(或者如果你只需要比较RGB就摆脱alpha:
int colorRGB = colorARGB & 0x00ffffff;
这适用于所有API级别。
修改强>
至于比较 - 一旦你检索到颜色,你可以使用Color.parseColor()并比较结果通常的方式:
if( colorRGB == Color.parseColor("#ffffff") ) {
// matches...
}
或与ARGB相同:
if( colorARGB == Color.parseColor("#ffffffff") ) {
// matches...
}
如果你经常这样做(比如.list adapter),我会解析一次并存储结果以供重用。
答案 1 :(得分:2)
在使用API级别11+时,您可以将screen.getBackground()
转换为ColorDrawable
,然后调用方法getColor()
。不幸的是,这种方法不适用于API级别< 11。
希望这有帮助!