在Android上使用带有样式、选择器和属性的主题

在Android上使用带有样式、选择器和属性的主题,android,styles,themes,selector,attr,Android,Styles,Themes,Selector,Attr,我尝试在选择器中使用主题更改文本颜色,但我已经使用了相同的颜色:#fff(我的colors.xml中没有此颜色!) 这是my selector.xml(在drawable/中): 借 而且颜色很好!我无法将选择器与主题属性一起使用?首先: 问题在于您的颜色编码。 颜色被指定为RGB(红色、绿色、蓝色)的组合,其中,在photoshop中,颜色是指16位/15位的颜色,其第一个字节具有0xFF值,该值具有红色分量,但不完全是红色 现在,对于android,它还指定了许多其他内容。颜色编码为ARGB

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

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


而且颜色很好!我无法将选择器与主题属性一起使用?

首先:
问题在于您的颜色编码。
颜色被指定为RGB(红色、绿色、蓝色)的组合,其中,在photoshop中,颜色是指16位/15位的颜色,其第一个字节具有
0xFF
值,该值具有红色分量,但不完全是红色

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

秒:
android:textColor=“?attr/tabsTextColor”
接受颜色值。通过选择器是错误的

第三
seletor中的每个项目都应该有一个可绘制的参考。那在哪里? 您的选择器中应该有一个drawable,就像在somethingselector.xml中一样。


因此,在您的代码中,您可以像这样使用android:drawableRight=“@drawable/somethingseletor”您不能在选择器中引用主题属性,但您可以创建多个选择器,每个选择器只引用颜色/可绘制资源,然后使用参考属性来控制在主题中使用哪个选择器

Simple and genius。感谢对于API<21的设备,是否可以根据需要使用此方法将单个向量着色为多个着色?如果有人想知道的话;theme属性必须是reference类型,例如@austrian dude你能举例说明如何为每个主题创建一个同名选择器吗?@R.F在我上面的例子中,theme.xml中的不同主题是按以下方式设置的:@drawable/selector\u text@drawable/selector\u text\u inverse
<?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>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="tabsTextColor" format="color" />
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- ... -->
    <color name="tabs_text_color">#ff0</color>
</resources>
<?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>
android:textColor="@drawable/selector.xml"
android:textColor="?attr/tabsTextColor"