2

すべての色が同じ結果になる理由がわかりません。私は黒、白、赤を持っていますが、すべてのテキストビューの背景は灰色で描画されます。ここで何が問題なのですか?

<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形状を塗りつぶすために使用される色

リソース int を直接渡すことで、R基本的には によって生成された乱数になりRます。を使用して 0xAARRGGBB カラー値に「デコード」する必要があります。Resources.getColor()

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

int の値は互いに近いため、おそらくすべて同じように見えます。

于 2013-07-05T12:37:16.757 に答える