Изменение цвета фона вкладки ActionBar

Есть ли способ изменить цвет фона на панели вкладок в ActionBar без изменения его в одной строке?

Чтобы уточнить, что я хочу: в портретном режиме ActionBar разделен на две строки: сам ActionBar и вкладки ниже. В ландшафтном режиме вкладки находятся в фактическом ActionBar.

Я хочу изменить цвет фона в портретном режиме. Если я изменил фон в TabView, он будет изменен для обоих режимов. Должен ли я создавать для них отдельные стили? Что вызывает второй вопрос: есть ли способ узнать, когда это будет две строки, а когда нет?

Или я просто что-то пропустил?

Я использую ActionBarSherlock btw

Ответ 1

Я думаю, что вы ищете атрибут android:backgroundStacked стиля ActionBar:

<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

Чтобы изменить цвет вкладки панели действий, Pls использует этот код:

//Например, если вы хотите использовать белый цвет в качестве фона вкладки, то

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

Ответ 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>

Надеюсь, это поможет вам.

Ответ 4

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

для людей xamarin.

Ответ 5

Чтобы отделить стили в зависимости от ориентации, вы должны создать в своей папке /res новую папку под названием layout-land (для пейзажного режима) и layout-port (в портретном режиме) и поместить ваши файлы xml для панели действий и установить это особый стиль (с желаемым цветом) в каждой папке.