2012-07-03 183 views
11

有没有办法改变在ActionBar中的标签栏的背景颜色,而不必在一行版本中更改它?更改ActionBar标签背景颜色

为了阐明我想要的内容:在纵向模式下,ActionBar被分成两行,ActionBar本身和下面的标签。在横向模式下,选项卡位于实际的ActionBar中。

我想更改纵向模式的背景颜色。如果我在TabView中更改背景,它将在两种模式下都会更改。我是否必须为这些创建单独的样式?这引出了第二个问题:有没有办法知道什么时候会是两条线,什么时候没有?

还是我只是想念一些东西?

我使用ActionBarSherlock顺便说一句

+0

也许这可以帮助:http://stackoverflow.com/questions/10064411/change-actionbarsherlock-background-color – 0gravity

+1

没有问题不是ActionBar的背景,但标签栏的背景。 –

回答

41

我认为你正在寻找的ActionBar风格android:backgroundStacked属性:

<style name="MyTheme" parent="android:Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBarStyle</item> 
</style> 

<style name="MyActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid"> 
    <item name="android:backgroundStacked">@drawable/my_stacked_background</item> 
</style> 

或者(如果使用ActionBarSherlock):

<style name="MyTheme" parent="@style/Theme.Sherlock.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBarStyle</item> 
    <item name="actionBarStyle">@style/MyActionBarStyle</item> 
</style> 

<style name="MyActionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid"> 
    <item name="android:backgroundStacked">@drawable/my_stacked_background</item> 
    <item name="backgroundStacked">@drawable/my_stacked_background</item> 
</style> 
+2

这是正确答案! –

+1

您能详细说明如何使用默认的全息灯主题进行这项工作吗?你叫什么名字?你在清单中叫什么?这不起作用。 –

3

在ActionBarSherlock的values/abs__themes.xml

<item name="actionModeSplitBackground">@drawable/abs__cab_background_bottom_holo_dark</item> 

你必须创建自己的主题,从ABS衍生

<style name="AppTheme" parent="Theme.Sherlock"> 
    <item name="actionBarStyle">@style/MyActionBar</item> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
</style> 

<style name="MyActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="actionModeSplitBackground">@drawable/my_split_background</item> 
</style> 

希望这有助于你。

+0

这就是我认为它可能是,但它不会改变任何东西。 –

+0

您是否已将此主题应用于AndroidManifest.xml中的应用程序? – vasart

+0

是的。但这是错误的价值。如果您查看实际资产(abs__cab_background_bottom_holo_dark),则用于显示所选资产的蓝色条位于顶部,而不是底部。也有没有不同的模式选择/未选中等 –

0

要单独依赖于定向的风格,你有你的/res文件夹中创建一个名为layout-land(景观模式)和layout-port(在纵向模式下)的新文件夹,并把你的XML文件进行操作栏,并设置它的具体风格(与你想要的颜色)在每个文件夹上。

+0

谢谢,我知道这一点。但它不只是风景/肖像。我假设在平板电脑上它总是只有一条线。我知道我也可以为大屏幕等单独的样式,但我不知道哪种模式将用于哪种配置。 –

23

更改动作条标签的颜色,请使用以下代码:

//例如,如果您需要白色作为制表背景,则

getActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF"))); 
+0

真棒纯代码:) – ROR

+0

谢谢@ROR;) –

+0

伟大的答案:)谢谢:) – Nevaeh

1
ColorDrawable colorDrawable = new ColorDrawable(Color.White); 
actionBar.SetStackedBackgroundDrawable(colorDrawable); 

for xamarin伙计。

+0

有点解释会改善这个答案。 – 2015-07-03 00:33:00