如何使用样式改变TabText的颜色



我正在使用样式来自定义我的应用程序中选项卡的外观。我已经设法根据选项卡是否被选择而没有问题来改变选项卡背景的颜色和外观。

然而,当我试图改变TabText的颜色为白色(#ffffff),似乎什么都没有发生。

我通过扩展父@style/Widget.AppCompat.ActionBar.TabText并将android:textColor设置为我自己的颜色:@color/tab_text_color来做到这一点。我已经按照说明和示例这样做,但文本颜色似乎不受影响。

所有我想要的是标签的文本颜色为白色所有的时间,因为它只是标签的背景,将改变时选择。我遵循了许多例子的方法,但出于某种原因,什么也没有发生。

有没有人能建议我缺少什么,或者在xml样式的选项卡中改变文本颜色的方法?

提前感谢。

涉及的两个文件如下:

themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomActionBarTheme"
       parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarTabStyle">@style/MyActionBarTabs</item>
    <item name="actionBarTabTextStyle">@style/TabTextStyle</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
       parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <!-- Support library compatibility -->
    <item name="background">@drawable/actionbar_background</item>
</style>
<!-- ActionBar tabs styles -->
<style name="MyActionBarTabs"
       parent="@style/Widget.AppCompat.ActionBar.TabView">
    <!-- tab indicator -->
    <item name="android:background">@drawable/actionbar_tab_indicator</item>
    <!-- Support library compatibility -->
    <item name="background">@drawable/actionbar_tab_indicator</item>
</style>

<!-- action bar tab text -->
<style name="TabTextStyle"
       parent="@style/Widget.AppCompat.ActionBar.TabText">
    <item name="android:textColor">@color/tab_text_color</item>
</style>

tab_text_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:color="#ffffff" />
</selector>

我设法解决了我的问题,这里是需要为任何人谁被困在这个未来:

创建我自己的actionBarTabText样式似乎是正确的方式去。即使我在AndroidManifest中设置了应用程序的主题:android:theme="@style/CustomActionBarTheme",实际的文本是在TextView中创建的线性布局,这意味着样式没有应用于它。

这就解释了为什么其他的样式元素,如标签和操作栏背景被样式化了,而文本没有,因为它们不是在布局中创建的。为了解决这个问题,在我的TextView中,我只是将样式属性设置为我在themes.xml中创建的"TabTextStyle"。

我仍然不完全理解为什么我必须手动应用特定的样式,即使它应该被设置为AndroidManifest中的"CustomActionBarTheme"的一部分。无论如何,这个修复工作,所以这里是下面的代码:

    <TextView
        android:id="@+id/friend_tab_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="-10dp"
        android:layout_gravity="center"
        android:text="FRIENDS"
        style="@style/TabTextStyle"/>

最新更新