0

我在 attrs.xml 上声明了这个属性:

<resources>
    <attr name="customColorPrimary" format="color" value="#076B07"/>
</resources>

我需要得到它的值,它应该是“#076B07”,但我得到的是一个整数:“2130771968”

我以这种方式访问​​值:

int color = R.attr.customColorFontContent;

有没有正确的方法来获取这个属性的真实值?

谢谢

4

2 回答 2

4

不,这不是正确的方法,因为整数R.attr.customColorFontContent是 Android Studio 在编译您的应用时生成的资源标识符。

相反,您需要从主题中获取与属性关联的颜色。使用以下类来执行此操作:

public class ThemeUtils {
    private static final int[] TEMP_ARRAY = new int[1];

    public static int getThemeAttrColor(Context context, int attr) {
        TEMP_ARRAY[0] = attr;
        TypedArray a = context.obtainStyledAttributes(null, TEMP_ARRAY);
        try {
            return a.getColor(0, 0);
        } finally {
            a.recycle();
        }
    }
}

然后你可以像这样使用它:

ThemeUtils.getThemeAttrColor(context, R.attr.customColorFontContent);
于 2016-08-15T21:45:35.373 回答
0

您应该color按如下方式访问属性:

public MyCustomView(Context context, AttributeSet attrs) {
    super(context, attrs);

    TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, 0, 0);
    try {
        color = ta.getColor(R.styleable.MyCustomView_customColorPrimary, android.R.color.white); //WHITE IS THE DEFAULT COLOR
    } finally {
        ta.recycle();
    }

    ...
}
于 2016-08-15T21:46:38.863 回答