Change ActionBar Tabs background color

2019-01-26 05:31发布

Is there a way to change the background color of the tab bar in the ActionBar without changing it in the one line version?

To clarify what I want: In portrait mode the ActionBar is split in two lines, the ActionBar itself and the tabs below. In landscape mode the tabs are in the actual ActionBar.

I want to change the background color of the portrait mode. If I change the background in the TabView it'll be changed for both modes. Do I have to create separate styles for those? Which brings up a second question: is there a way to know when it'll be two lines and when not?

Or am I just missing something?

I'm using ActionBarSherlock btw

5条回答
Juvenile、少年°
2楼-- · 2019-01-26 06:09

To seperate styles depending on orientation you have to create in your /res folder a new folder called layout-land (for landscape mode) and layout-port (in portrait mode) and put your xml files for action bar and set it's specific style (with the color you want) on each folder.

查看更多
Root(大扎)
3楼-- · 2019-01-26 06:10

To Change Actionbar Tab's color, Pls use this code:

//For Example if you want White color as Tabs background, then

getActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));
查看更多
乱世女痞
4楼-- · 2019-01-26 06:15

In ActionBarSherlock's values/abs__themes.xml there is

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

You have to create your own theme derived from 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>

Hope this helps you.

查看更多
一夜七次
5楼-- · 2019-01-26 06:28

I think you are looking for the android:backgroundStacked attribute of the ActionBar style:

<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>

or (If using 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>
查看更多
再贱就再见
6楼-- · 2019-01-26 06:28
ColorDrawable colorDrawable = new ColorDrawable(Color.White);
actionBar.SetStackedBackgroundDrawable(colorDrawable);

for xamarin folks.

查看更多
登录 后发表回答