主题Android ActionBar:更改TabBar背景

时间:2014-02-15 19:36:02

标签: android android-actionbar android-theme android-tabs android-actionbar-compat

我跟着this Guide设置了ActionBar的样式。我在我的应用中使用了固定的tabs,所以我也要对标签进行主题化 (注意:我正在使用appcompat主题来确保一些向后兼容性)

所以我用了

<style
    name="CustomTheme"
    parent="@style/Theme.AppCompat.Light" >

    <item name="android:actionBarStyle">@style/CustomActionBar</item>
    <item name="actionBarStyle">@style/CustomActionBar</item>

    <item name="android:actionBarTabStyle">@style/CustomActionBarTabs</item>
    <item name="actionBarTabStyle">@style/CustomActionBarTabs</item>
</style>

作为我的主题。

我没有问题地设置ActionBar背景,但后来我尝试使用以下选项来标记:

<style
    name="CustomActionBarTabs"
    parent="@style/Widget.AppCompat.ActionBar.TabView" >

    <item name="android:background">@drawable/customtheme_actionbar_tab_indicator</item>
    <item name="background">@drawable/customtheme_actionbar_tab_indicator</item>
</style>

背景指向StateList,其中我为不同的上下文设置了不同的drawable,其工作方式与预期的一样。除了标签 之外。不适用于ActionBar。

标签栏的分隔符和背景不是主题 我怎么能主题那些? (灰色部分)

example image

主题创建指南

我想知道是否有任何关于创建看起来不错的主题的指南? (好=类似于默认主题,所以应用程序适合Android生态系统)

default theme image

因为如果你仔细观察默认主题,你可以在ActionBar drawable的底部看到一个小行。 (在我的主题中是浅绿色的部分)
在创建一个看起来与默认主题类似的主题时,您可能会考虑其他一些事情,因此对某些指南来说会很好。

另外:TabBar是否总是比ActionBar更暗? (如果是这样,有多深?)

图像颜色(如图像中溢出按钮的颜色)应该比ActionBar颜色更亮/更暗?

提前致谢,
乌列尔

2 个答案:

答案 0 :(得分:5)

添加此

<style
name="CustomTheme"
parent="@style/Theme.AppCompat.Light" >
.
.
.
<item name="android:actionBarTabBarStyle">@style/TabBar</item>
</style>

然后

<style name="TabBar" parent="@style/Widget.AppCompat.ActionBar.TabBar">
    <item name="android:background">/** Whatever color you want, like #ffff00 **/</item>
</style>

答案 1 :(得分:0)

只是因为这可能对某人有帮助

以下这个对我有用

<style name="Theme" parent="Theme.AppCompat.Light.DarkActionBar">

        <item name="actionBarTabStyle">@style/Theme.MyActionBarTab</item>
        <item name="actionBarTabTextStyle">@style/Theme.MyActionBarTabText</item>

    </style>


<style name="Theme.MyActionBarTab" parent="@style/Widget.AppCompat.ActionBar.TabView">
        <item name="android:background">@color/gray_mask</item>

    </style>


<style name="Theme.MyActionBarTabText" parent="Widget.AppCompat.Light.ActionBar.TabText">
        <item name="android:textColor">@color/black</item>
        <item name="android:textSize">@dimen/size_28</item>
        <item name="android:gravity">center</item>
        <item name="textAllCaps">false</item>

    </style>