从AttributeSet获取颜色

时间:2017-09-26 11:09:59

标签: java android xml colors

我试图获取一种颜色,在我的AttributeSet中设置,该颜色引用我在colors.xml中定义的颜色。

这里有 colors.xml 的样子

<?xml version="1.0" encoding="utf-8"?>
<resources>
    ...
    <color name="colorBlack">#000000</color>
</resources>

attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <declare-styleable name="TestView">
          ...
          <attr name="lineColor" format="color" value="@color/colorBlack" />
     </declare-styleable>
</resources>

TestView.java

int mLineColor;

public TestView(Context context, AttributeSet attrs) {
    super(context, attrs);
    TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.TestView, 0, 0);
    try {
        ...
        mLineColor = a.getColor(R.styleable.TestView_lineColor,  0);
    } finally {
        a.recycle();
    }
}

出于某种原因,通过

获取属性 lineColor
a.getColor(R.styleable.TestView_lineColor,  0);

将始终返回默认值0.

这意味着,我无法继续将颜色设置为Paint对象,为我的形状着色。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

虽然已经很晚了。让我分享对我有用的解决方案。

以某种方式a.getColor总是返回0。因此,我使用a.getDrawable()。对于将背景颜色设置为视图,这对我来说效果很好。

要获得颜色,您可以使用

(ColorDrawable) a.getDrawable()).getColor();

我还定义了format =“ reference”。即使对于十六进制颜色代码也可以正常工作。

<attr name="lineColor" format="reference" />