2

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

1 回答 1

5

将其更改为:

gradientDrawable.setColor(getResources().getColor(entry.getValue()));

http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html#setColor(int)

它需要的参数是:

argb用于填充形状的颜色

通过R直接将资源 int 传递给它,它基本上是一个由R. 您需要使用将其“解码”为 0xAARRGGBB 颜色值Resources.getColor()

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

它们可能看起来都一样,因为整数的值彼此接近。

于 2013-07-05T12:37:16.757 回答