【发布时间】:2017-03-26 13:58:38
【问题描述】:
我希望在单击按钮时获取它的背景颜色。如果背景颜色与名为 "blue_color" 的资源中的颜色相同,则将背景设置为透明。否则将其设置为 “蓝色_颜色”。我已经尝试过here 提到的方法,但它给了我错误。
代码:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ColorDrawable btc = (ColorDrawable) btn.getBackground();
int colorId = btc.getColor();
if(colorId == R.color.blue_color){
btn.setBackgroundColor(Color.TRANSPARENT);
}else{
btn.setBackgroundColor(getResources().getColor(R.color.blue_color));
}
}
});
来自 logcat 的错误:
致命异常:主要 java.lang.ClassCastException: android.graphics.drawable.InsetDrawable 不能转换为 android.graphics.drawable.ColorDrawable
在
所在的那一行ColorDrawable btc = (ColorDrawable) btn.getBackground();
【问题讨论】:
-
颜色永远不会是
R.color.blue_color,因为R.color.blue_color不是颜色。它是颜色资源的标识符。我建议您使用单独的boolean或其他字段来跟踪按钮的状态。
标签: android android-background