如何使用样式更改TabText的颜色?

时间:2014-03-28 14:08:19

标签: android xml android-styles

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

但是,当我尝试将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>

1 个答案:

答案 0 :(得分:1)

我设法解决了我的问题,以下是将来坚持这个问题的人所需要的:

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

这解释了为什么其他样式元素(如制表符和操作栏背景)的样式,但文本不是因为它们未在布局中创建。为了解决这个问题,在我的 TextView 中,我只将style属性设置为&#34; TabTextStyle&#34;我在 themes.xml 中创建了。

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

    <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"/>