有没有办法在ActionBar中更改标签栏的背景颜色而不在一行版本中更改它?
澄清我想要的东西:在纵向模式下,ActionBar分为两行,ActionBar本身和下面的标签。在横向模式下,选项卡位于实际的ActionBar中。
我想更改纵向模式的背景颜色。如果我在TabView中更改背景,它将针对两种模式进行更改。我必须为那些创建单独的样式吗?这提出了第二个问题:有没有办法知道什么时候它会是两条线,何时不是?
或者我错过了什么?
我正在使用ActionBarSherlock btw
答案 0 :(得分:43)
我认为您正在寻找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>
答案 1 :(得分:24)
若要更改操作栏选项卡的颜色,请使用以下代码:
//例如,如果您想将白色作为标签背景,那么
getActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));
答案 2 :(得分: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>
希望这会对你有所帮助。
答案 3 :(得分:1)
ColorDrawable colorDrawable = new ColorDrawable(Color.White);
actionBar.SetStackedBackgroundDrawable(colorDrawable);
对于xamarin人。
答案 4 :(得分:0)
要根据您必须在/res
文件夹中创建一个名为layout-land
的新文件夹(用于横向模式)和layout-port
(在纵向模式下)创建的方向分隔样式,并放置您的xml操作栏的文件,并在每个文件夹上设置它的特定样式(使用您想要的颜色)。