在Android上使用带有样式,选择器和attr的主题

时间:2012-03-02 11:12:38

标签: android styles themes selector attr

我尝试在选择器中使用主题更改文本颜色但我已经使用相同的颜色:#fff(我的colors.xml中没有这个颜色!)

这是我的selector.xml(在drawable /中):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="@android:color/white" />
    <item android:state_focused="true" android:color="@android:color/white" />
    <item android:state_pressed="true" android:color="@android:color/white" />
    <item android:color="?attr/tabsTextColor" />
</selector>

我的attrs.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="tabsTextColor" format="color" />
</resources>

Colors.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- ... -->
    <color name="tabs_text_color">#ff0</color>
</resources>

我的theme.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.Custom" parent="@style/Theme.GreenDroid.NoTitleBar">
        <item name="tabsTextColor">@color/tabs_text_color</item>
    </style>
</resources>

我不明白,因为文字颜色为红色(使用photoshop获取#f00)但不是#ff00!

错误在哪里?感谢

编辑:我替换了我的布局

android:textColor="@drawable/selector.xml"

通过

android:textColor="?attr/tabsTextColor"

颜色很好!我不能将选择器与主题attr一起使用?

2 个答案:

答案 0 :(得分:11)

你不能在选择器中引用主题attrs,但你可以做的是创建多个选择器,每个选择器只引用颜色/可绘制资源,然后使用引用attr来控制在主题中使用哪个选择器

答案 1 :(得分:-4)

<强>首先
问题在于您的颜色编码 颜色指定为RGB(红色,绿色,蓝色)的组合,其中photoshop 0xff00表示其16bit / 15bit颜色,其第一个字节的值为0xFF,其中包含红色成分但不完全是红色..

现在为Android安装了许多其他内容。颜色编码为ARGB,它是Alpha,红绿蓝,因此不透明红色的颜色值为0xFFFF0000。 Android中的颜色为32位值。

<强>第二
android:textColor="?attr/tabsTextColor"接受颜色值。传递选择器是错误的。

<强>第三
seletor中的每个项目都应该引用drawable。哪里是? 你应该在你的选择器中有一个drawable,就像在somethingselector.xml中一样 <item android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/something" />

因此,在您的代码中,您可以像android:drawableRight="@drawable/somethingseletor"

一样使用