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



我试图在选择器中更改带有主题的文本颜色,但我已经有了相同的颜色:#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>

还有我的主题.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"

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

您不能在选择器中引用中的主题属性,但您可以创建多个选择器,每个选择器只引用颜色/可绘制资源,然后使用一个引用属性来控制主题中使用的选择器

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

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

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

第三
seletor中的每个项目都应该有一个可绘制的参考。那在哪里?您的选择器中应该有一个drawable,就像somethingselector.xml中一样。
<item android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/something" />

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

相关内容

  • 没有找到相关文章

最新更新