自定义样式 - 在代码中检索颜色attr - 只要颜色不是#ffffffff就可以正常工作

时间:2012-03-20 15:15:10

标签: android styles attr

我已经定义了一个颜色attr,将它设置为样式,我使用下面的代码来使用该值。只要颜色与#ffffffff不同,一切都正常工作(根据下面的代码表示,对于颜色变量获得正确值的样式中定义的任何颜色,但对于白色,颜色值为-1)。 似乎用我的代码颜色值必须小于#ffffffff,我不明白为什么。

这是attr的定义:
<attr name="viewLvActive" format="color"/>

这是自定义样式中的一行:
<item name="@attr/viewLvActive">#ffffffff</item>

这是代码,我用它从我的主题中获取此颜色值:

Resources.Theme theme = mCtx.getTheme();
TypedValue styleID = new TypedValue();
if (theme.resolveAttribute(R.attr.viewLvActive, styleID, true))
    color=styleID.data;
else
    color=-1;

最后,我可以使用#fffffffe的颜色,但我仍然想知道错误在哪里。

1 个答案:

答案 0 :(得分:0)

color变量的类型是什么?因为如果它是int,那么-1 == #ffffffff。如果您要查看以下内容:

if (color == -1) {

你会为#ffffffff获得trueint为32位,ARGB颜色将填满所有颜色。你不能使用像-1(或任何其他值)这样的值来表示&#34;没有颜色&#34;。