在Android上使用带有样式、选择器和属性的主题
我尝试在选择器中使用主题更改文本颜色,但我已经使用了相同的颜色:#fff(我的colors.xml中没有此颜色!) 这是my selector.xml(在drawable/中): 借在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
而且颜色很好!我无法将选择器与主题属性一起使用?首先:
问题在于您的颜色编码。
颜色被指定为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"