【问题标题】:How to change the color of TabText using styles?如何使用样式更改 TabText 的颜色?
【发布时间】:2014-03-28 14:08:18
【问题描述】:

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

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

【问题讨论】:

    标签: android xml android-styles


    【解决方案1】:

    我设法解决了我的问题,这是将来遇到此问题的任何人所需要的:

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

    这解释了为什么其他样式元素(例如选项卡和操作栏背景)被设置了样式,但文本却没有被设置,因为它们不是在布局中创建的。为了解决这个问题,在我的 TextView 中,我只是将 style 属性设置为我在 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"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 2021-08-06
      相关资源
      最近更新 更多