2012-03-02 70 views
2

我尝试在选择改变文字颜色与主题,但我已经同色:#FFF(我在colors.xml还没有这个颜色!)使用的主题风格,选择和attR在Android

这是我selector.xml(在绘制/):

<?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> 

我不understant因为文本颜色为红色(#获得F00与Photoshop),但不#FF00!

错误在哪里?由于

编辑:我在布局

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

替代由

android:textColor="?attr/tabsTextColor" 

而且显色性好!我不能使用主题attr的选择器?

回答

-4

第一张:
问题在于您的颜色编码。
颜色被指定为RGB(红,绿,蓝)的组合,其中作为在Photoshop 0xff00意味着它的一个16位/ 15位颜色,其第一个字节0xFF值这将具有红色分量而不是红色恰好..

现在对于android来说,其中指定了许多其他的东西。颜色编码为ARGB,因为它是Alpha,红绿蓝,因此不透明红色的颜色值为0xFFFF0000。 Android中的颜色是32位值。

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


在seletor每个项目都应该能绘制的参考。哪里是? 你应该在你的selecter中有一个drawable,就像在somethingselector.xml中一样。
<item android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/something" />

因此,在你的代码,你可以使用这样android:drawableRight="@drawable/somethingseletor"

10

的选择,不能引用内的主题ATTRS,但你可以做的是创建多个选择,每个仅供参考色/绘图资源,并然后使用参考attr来控制在您的主题中使用哪个选择器

+0

简单和天才。谢谢 – 2016-03-20 22:52:59

+0

对于API <21设备,是否可以根据需要使用此方法将单个向量设置为多个色调? – RiA 2016-07-11 06:03:23

+0

如果有人想知道;主题属性必须是类型引用,例如 AustrianDude 2018-01-11 13:05:51