为什么所有颜色都一样?

时间:2013-07-05 12:35:33

标签: android android-layout

我不明白为什么所有的颜色会给出相同的结果。所有的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();
        }

1 个答案:

答案 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()

将其“解码”为0xAARRGGBB颜色值

http://developer.android.com/reference/android/content/res/Resources.html#getColor(int)

它们看起来可能都是一样的,因为它们的价值相互接近。