仅更改ActionBarSherlock的背景。不是标签

时间:2012-11-07 12:07:43

标签: android actionbarsherlock

我使用此代码更改ActionBarSherlock的颜色:

    <style name="Theme.MyTheme" parent="Theme.Sherlock.Light.DarkActionBar">

    <!-- set style for action bar (affects tab bar too) -->
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
    <!-- define text style for tabs -->
    <item name="actionBarTabTextStyle">@style/MyTheme.ActionBar.TabText</item>
    <item name="android:actionBarTabTextStyle">@style/MyTheme.ActionBar.TabText</item>
</style>

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar">

    <!-- define background for action bar (sets default for all parts of action bar - main, stacked, split) -->
    <item name="android:background">#blue</item>
    <item name="background">#blue</item>
    <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyleWhite</item>
    <item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyleWhite</item>

    <!-- set background for the tab bar (stacked action bar) - it overrides the background property -->
    <item name="android:backgroundStacked">#grey</item>
    <item name="backgroundStacked">#grey</item>
</style>

<style name="MyTheme.ActionBar.TabText" parent="Widget.Sherlock.ActionBar.TabText">
    <item name="android:textColor">#black</item>
</style>

<style name="MyTheme.ActionBar.TitleTextStyleWhite" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">#white</item>
</style>

正如Jake Warton所建议的那样:

Change ActionBarSherlock background color

但问题是ActionBar和Tabs都改为蓝色颜色。我实际上想要将顶部actionBar背景更改为蓝色并将标签背景更改为白色

怎么做?

谢谢

2 个答案:

答案 0 :(得分:6)

使用ActionbarStyleGenerator更改所需内容的颜色。这是迄今为止最简单,最直观的方式。

如何:

  1. 使用UI为不同的项目选择颜色。
  2. 完成后点击下载.zip
  3. ZIP将包含您需要在项目res / layout和res / drawableXXXX文件夹中复制的所需文件夹下的资源文件

答案 1 :(得分:2)

有两种方法可以更改标签栏的背景:

1)如果您仅以纵向方式使用标签,则可以设置backgroundStacked {和android:backgroundStacked(android:)actionBarStyle。它设置堆叠操作栏的背景(标签栏)。

您的主题必须包含:

<style name="Theme.MyTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <!-- set style for action bar (affects tab bar too) -->
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
</style>

ActionBarStyle必须是:

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar">
    <!-- define background for action bar (sets default for all parts of action bar - main, stacked, split) -->
    <item name="android:background">#ff0000ff</item>
    <item name="background">#ff0000ff</item>

    <!--  set background for the tab bar (stacked action bar) - it overrides the background property -->
    <item name="android:backgroundStacked">#ffff</item>
    <item name="backgroundStacked">#ffff</item>
</style>

这就是你要做的一切。但是这种解决方案不适用于景观。在横向中,选项卡可以移动到主操作栏。

2)如果您在纵向和横向使用标签,则必须使用不同的解决方案。

主题必须包含:

<style name="Theme.MyTheme" parent="Theme.Sherlock.ForceOverflow">
    <!-- set style for action bar -->
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item>

    <!-- set the tab bar style -->
    <item name="actionBarTabBarStyle">@style/Widget.MyTheme.TabBar</item>
    <item name="android:actionBarTabBarStyle">@style/Widget.MyTheme.TabBar</item>
</style>

并设置标签栏样式的背景:

<style name="Widget.MyTheme.TabBar" parent="Widget.Sherlock.ActionBar.TabBar">
    <item name="android:background">#ffff</item>
</style>

注意:如果您尝试合并这两种方法,则actionBarTabBarStyle的背景将放在backgroundStacked的背景上。

注意:这两种方法为整个标签栏设置背景,设置标签栏中单个标签的背景是不同的。

标签文字颜色

如果要为选项卡设置文本颜色,则必须定义actionBarTabTextStyle

主题必须包含:

<style name="Theme.MyTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    ...
    <!-- define text style for tabs -->
    <item name="actionBarTabTextStyle">@style/MyTheme.ActionBar.TabText</item>
    <item name="android:actionBarTabTextStyle">@style/MyTheme.ActionBar.TabText</item>
</style>

标签文本样式为:

<style name="MyTheme.ActionBar.TabText" parent="Widget.Sherlock.ActionBar.TabText" >
    <item name="android:textColor">#FF000000</item>
</style>