我试图获取一种颜色,在我的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();
}
}
出于某种原因,通过
获取属性 lineColora.getColor(R.styleable.TestView_lineColor, 0);
将始终返回默认值0.
这意味着,我无法继续将颜色设置为Paint对象,为我的形状着色。
非常感谢任何帮助。
答案 0 :(得分:0)
虽然已经很晚了。让我分享对我有用的解决方案。
以某种方式a.getColor总是返回0。因此,我使用a.getDrawable()。对于将背景颜色设置为视图,这对我来说效果很好。
要获得颜色,您可以使用
(ColorDrawable) a.getDrawable()).getColor();
我还定义了format =“ reference”。即使对于十六进制颜色代码也可以正常工作。
<attr name="lineColor" format="reference" />