gpt4 book ai didi

java - 从 AttributeSet 获取颜色

转载 作者:行者123 更新时间:2023-11-29 02:37:01 24 4
gpt4 key购买 nike

我正在尝试获取一种颜色,在我的 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 对象中来为我的形状着色。

如有任何帮助,我们将不胜感激。

最佳答案

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

a.getColor 总是返回 0。因此,我使用 a.getDrawable()。这对我来说非常适合为 View 设置背景颜色。

要获得颜色,您可以使用

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

我还定义了 format="reference"。即使对于十六进制颜色代码,这也能正常工作。

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

关于java - 从 AttributeSet 获取颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46424852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com