2015-04-01 8 views
0

В моем приложении для Android используется минимальная версия SDK 15. Я пытаюсь изменить цвет фона на панели действий и хочу сделать это, изменив стиль и тему. Я пробовал много вещей, но фон остается темным. Вот то, что мои стили выглядеть следующим образом:Изменение цвета фона панели действий

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
</style> 
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">#eeeeee</item> 
</style> 

В моей manifext я поставил тему приложения к AppTheme.

ответ

1

По умолчанию AppCompat библиотеки поддержки использует значение атрибута colorPrimary как цвет ActionBar ,

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">#eeeeee</item> 
</style> 

Но если вы хотите, чтобы цвет ActionBar быть независимым от основного цвета темы, то вы можете установить это следующим образом:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="actionBarStyle">@style/ActionBar</item> 
</style> 

<style name="ActionBar" parent="Widget.AppCompat.ActionBar.Solid"> 
    <item name="background">@color/primary_teal_500</item> 
</style> 
+0

Ваше второе решение - это то, что я искал. Он выглядит практически так же, как и то, что я опубликовал, за исключением случаев, когда я устанавливал родительский стиль ActionBar в @android: style/Widget.Holo.Light.ActionBar, он не работает. Ваш родитель правильный. – AndroidDev

0

Использование colorPrimary и colorPrimaryDark

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 

     <item name="colorPrimary">@color/LightColor</item> 
     <item name="colorPrimaryDark">@color/DarkColor</item> 

    </style> 
+0

Это делает работу, но он поднимает вопрос о том, какой colorPrimary относится к. Это почти наверняка изменит цвет многих других вещей, которые используют этот атрибут, а не только Actionbar. Нет ли атрибута строго для панели действий? – AndroidDev

+0

@AndroidDev вам нужно создать стиль или использовать библиотеку ActionBarSherlock – Santiago

+0

Но я создал стиль, как показано в моем сообщении. Мне не нужно было полагаться на какую-то стороннюю библиотеку. – AndroidDev

0

Измените файл style.xml следующим образом и попробуйте,

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
     <item name="android:background">#eeeeee</item> 
    </style> 

И ваш menifest следующим образом,

android:theme="@style/AppTheme" > 
+0

Не работает вообще. Кроме того, нет темы под названием «AppBaseTheme». Мне пришлось использовать @ style/Theme.AppCompat.Light.DarkActionBar – AndroidDev

+0

Я обновил anwser –

0

При использовании поддержки Библиотеку определите панель действий следующим образом:

Реза/значение/themes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <!-- the theme applied to the application or activity --> 
    <style name="CustomActionBarTheme" 
           parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
        <item name="android:actionBarStyle">@style/MyActionBar</item> 

        <!-- Support library compatibility --> 
        <item name="actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <!-- ActionBar styles --> 
    <style name="MyActionBar" 
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
        <item name="android:background">@drawable/actionbar_background</item> 

        <!-- Support library compatibility --> 
        <item name="background">@drawable/actionbar_background</item> 
    </style> 
</resources> 

Затем применить тему ко всей приложению или отдельным видов деятельности:

<application android:theme="@style/CustomActionBarTheme" ... /> 
Смежные вопросы