我不明白为什么所有的颜色会给出相同的结果。所有的textviews背景都是灰色的,虽然我有黑色,白色和红色。这里有什么问题?
<color name="color1">#FFFFFF</color>
<color name="color2">#000000</color>
<color name="color3">#FF0000</color?
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(R.id.color1,R.color.color1);
map.put(R.id.color2,R.color.color2);
map.put(R.id.color3,R.color.color3);
GradientDrawable gradientDrawable;
TextView textView;
for (Map.Entry<Integer,Integer> entry : map.entrySet()) {
textView = findTextView(entry.getKey());
gradientDrawable = (GradientDrawable) textView.getBackground().mutate();
gradientDrawable.setColor(entry.getValue());
gradientDrawable.invalidateSelf();
}
答案 0 :(得分:5)
将其更改为:
gradientDrawable.setColor(getResources().getColor(entry.getValue()));
http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html#setColor(int)
所需的参数是:
argb 用于填充形状的颜色
通过直接传递R
资源int,它基本上是由R
生成的随机数。您需要使用Resources.getColor()
http://developer.android.com/reference/android/content/res/Resources.html#getColor(int)
它们看起来可能都是一样的,因为它们的价值相互接近。