如何获取自定义属性(attrs.xml)的值?

How to get the value of a custom attribute (attrs.xml)?

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

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

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

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

int color = R.attr.customColorFontContent;

是否有正确的方法来获取该属性的真实值?

谢谢

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

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

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);

您应该按如下方式访问 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();
    }

    ...
}