2012-11-07 3 views
2

я использовал этот код, чтобы изменить цвет 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> 

как предложил Джейк Warton здесь:

Change ActionBarSherlock background color

Но дело это ActionBar и Вкладки как изменение голубой цвет. Я на самом деле хочу, чтобы изменить верхний ActionBar фон в синий и Вкладки фона на белый

, как это сделать?

Спасибо

ответ

6

ActionbarStyleGenerator Используйте, чтобы изменить цвет, что все, что вам нужно. Это, безусловно, самый простой и интуитивно понятный способ.

Как:

  1. Используйте пользовательский интерфейс, чтобы выбрать цвет для различных элементов.
  2. После этого нажмите на скачать .zip
  3. ZIP будет содержать файлы ресурсов под нужные папки, которые необходимо скопировать в своих проектах Рез/макет и Рез/папки drawableXXXX
+0

Я имею в виду, где использовать эти чертежи? В пользовательской теме вместо цветов? –

+0

Вам нужно просто скопировать файлы, которые вы загружаете. Он выполняет весь код для вас. – PravinCG

+0

Да, сделано, спасибо большое. Но как я могу изменить TextColor Tab программно, например, если выбрана вкладка TextColor должен быть белым, а серым. Или это можно сделать в самой теме? –

2

Есть два способа, как вы можете изменить фон панели вкладок:

1) Если вы используете вкладки только в портретной ориентации, вы можете установить backgroundStackedandroid: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.

Примечание: Эти два подхода задают фон для всей панели вкладок, настройка фона для одной вкладки на панели вкладок различна.

Tab цвет текста

Если вы хотите установить цвет текста для вкладок вы должны определить 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> 
+0

я добавил полный код. Проблема здесь в backgroundcolor и textcolor отлично подходит для ActionBar, а не для TabsBar. я использую неправильный родитель для своего ActionBarTab –

+0

Вы ошибочно комбинируете стили. Панель действия стилизации проблематична, и все имеет правильное (а иногда и неожиданное) место. Например, 'backgroundStacked' не действует в' actionBarTabStyle', он должен быть частью 'actionBarStyle'. Цвет текста вкладки должен быть оформлен по-разному. Я обновлю ответ. – Tomik

+0

Я сделал именно то, что вы предложили. Но здесь проблема заключается в том, что цвет фона actionBar такой же, как цвет TabBat i.e, серый, текст для ActionBar и TabBar работает нормально. Я обновил вопрос с помощью кода, который я использую прямо сейчас. Это была основная проблема, мои ActionBar и TabBar имеют одинаковый цвет всегда, раньше он был таким же, как цвет ActionBar (синий), после использования вашего кода, цвет TabBat для обоих (серый) –

Смежные вопросы