1

Я знаю, что вопрос кажется простым, но не что-то вроде chei здесь раньше. Итак, вы идете:ActionBar, появляющийся в разных цветах с различными версиями Android

В моем приложении Android с помощью библиотеки поддержки с AppCompat v7 добавлен ActionBar. Все работает отлично, за исключением того, что, когда приложение работает на Android 2.3, фон ActionBar темный, и когда Squeegee android 4.0.2 ActionBar этот фон становится серым.

Ниже, как определить мой @style

<resources> 

    <!-- 
     Base application theme, dependent on API level. This theme is replaced 
     by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
    --> 
    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
     <!-- 
      Theme customizations available in newer API levels can go in 
      res/values-vXX/styles.xml, while customizations related to 
      backward-compatibility can go here. 
     --> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

</resources> 

как я могу решить эту проблему?

enter image description here enter image description here

+0

Невозможно ли установить фоновый рисунок на нужный вам цвет через код? Чтобы он оставался неизменным на любом устройстве? –

+0

Фактически, меняя цветовой код, да, но хотел бы получить объяснение об этом –

ответ

2

Это не будет работать для вас на мин цели, как 2.3.3 в случае, если ваша цель мин является уровень API 11 вы можете изменить цвет фона

<resources> 
    <style name="AppTheme" parent="@android:style/Theme.Holo.Light"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:background">ANY_HEX_COLOR_CODE</item> 
    </style> 
</resources> 
+0

Это хорошо работает для меня. Но есть также возможность использовать этот инструмент в Интернете для настройки вашей темы: http://jgilfelt.github.io/android-actionbarstylegenerator/ –

+1

@WalterBarreiroNeto Хороший инструмент infact. –

0

Я хотел бы добавьте мое наблюдение (используя min sdk 8, target sdk 19) для будущих читателей по этому вопросу.

  • Если вы хотите установить только цвет фона панели действий в разных версиях Android, ее проще сделать в коде.

    actionBar = getSupportActionBar(); actionBar.setBackgroundDrawable (getResources(). GetDrawable (R.color.your_desired_color));

Это переопределяет фон по умолчанию для версий и устанавливает желаемый цвет.

Примечание: я видел на различных пост и попытался установить цвет фона следующим образом:

ColorDrawable colorDrawable = new ColorDrawable(); 
colorDrawable.setColor(R.color.your_desired_color); 
actionBar.setBackgroundDrawable(colorDrawable); 

, но это не сработало, причина мне неизвестна за время being.so я успешно попробовал упомянутый выше код.

  • Если вы хотите установить цвет фона панели действий (наряду с другими атрибутами), а не в коде, вы можете использовать стиль и тему. Я сделал стиль следующим образом.

внутри разреш/значение/style.xml

<resources> 

    <!-- 
     Base application theme for API 11+. This theme completely replaces 
     AppBaseTheme from res/values/styles.xml on API 11+ devices. 
    --> 
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- API 11 theme customizations can go here. --> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

    <!-- custom theme for my app --> 
    <style name="MyAppTheme" parent="AppTheme"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

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

</resources> 

внутри разреш/значение-V11 и разрешение/ценности-V14

<resources> 

    <!-- 
     Base application theme for API 11+. This theme completely replaces 
     AppBaseTheme from res/values/styles.xml on API 11+ devices. 
    --> 
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- API 11 theme customizations can go here. --> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

    <!-- custom theme for my app --> 
    <style name="MyAppTheme" parent="AppTheme"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

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

</resources> 

Примечание: Как Мне приходилось иметь аналогичный взгляд на панель действий по версиям Android, у меня был код с копией в res/values-v11 и res/values-v14 из res/values. Но, к моему удивлению, я не получил желаемого результата. Причина? Нам нужно добавить пространство имен «android» перед тегами для android v11 и более поздних версий.Поэтому я изменил actionBarStyle к андроида: actionBarStyle и фоне к андроида: фон. Это принесло мне желаемый результат.

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