1

我正在尝试比较我的一个视图的背景颜色是否等于我创建的颜色资源并且没有找到任何有效的东西。

我愿意使用任何方法,无论是转换为 HEX 还是 String 或 Int,只要它有效。这是我当前方法的一个示例。

我使用以下方法设置视图的背景颜色:

chosenColor.setBackgroundColor(getResources().getColor(R.color.tag_pink));

当我使用这种方法检索它时:

ColorDrawable chosenColorBox = (ColorDrawable) chosenColor.getBackground();  
int colorId =  chosenColorBox.getColor();

colorId == `-611329` 

使用Integer.toStringonR.color.tag_pink显示的值2130968581显然不能在if语句中与检索到的值进行比较。

最好的方法是什么,这样我就不必对各个值进行硬编码,这会阻止我调整颜色资源?

4

2 回答 2

3

尝试比较颜色Context.getResources().getColor(R.color.tag_pink)而不是资源的 ID(不是颜色!)。返回值以 的形式表示颜色0xAARRGGBB

于 2013-05-27T19:23:13.127 回答
1

简单回答:

int viewColor=((ColorDrawable) YOUR_VIEW.getBackground()).getColor();

if(viewColor==Color.parseColor("#ffffffff"){
  //Color matched
}
于 2016-11-06T09:28:26.713 回答