Цвет фона панели действий AppCompat

У меня есть этот style.xml в моем приложении для Android:

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<style name="OrangeTheme" parent="@style/Theme.AppCompat">
    <item name="android:actionBarStyle" tools:ignore="NewApi">@style/OrangeTheme.OrangeActionBar</item>
    <item name="android:windowActionBar">true</item>
</style>

<style name="OrangeTheme.OrangeActionBar" parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:background">@color/orange</item>
    <item name="background">@color/orange</item>
    <item name="android:backgroundStacked">@color/orange</item>
    <item name="android:backgroundSplit">@color/orange</item>
    <item name="android:titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item>
</style>

<style name="Theme.MyAppTheme.ActionBar.TitleTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/black</item>
</style>

I have searched StackOverflow and Google, but nothing helped. I wasn't able to change the ActionBar background color.

Внутри моего MainActivity я использую этот код:

 public void restoreActionBar() {
    ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setTitle(mTitle);
}

Пробовал не использовать AppCompat, но тогда в моем имени куча ошибок. Он расширяет ActionBarActivity. Если я изменю его на FragmentActivity, я не смогу использовать getSupportActionBar(), а без него мой getActionBar() всегда будет null.

minSdkVersion 19
targetSdkVersion 21

Так что прямо сейчас я не могу изменить его. Я попытался переименовать родителя моей темы стиля. Я пробовал использовать andrioud:background и background. Единственное, что меняется, это когда я использую другого родителя, например Theme.App.Compat.Light или Theme.AppCompat.Light.DarkActionBar.

У кого-нибудь есть идея, как я могу изменить цвета и другие вещи во время выполнения?


comment
Надеюсь это поможет! stackoverflow .com/questions/23155637/   -  person nibz    schedule 04.12.2014
comment
Уже пробовал такие, не помогло   -  person K213    schedule 04.12.2014


Ответы (2)


С новым AppCompat-v7 (v21) вы можете использовать новые атрибуты цветовой темы. См. здесь.

Или же вы должны использовать свойство <item name="actionBarStyle"> (без префикса android).

person GPack    schedule 06.12.2014

Чтобы использовать цвет фона с AppCompat, вам также необходимо определить имя элемента без атрибута android:.

Например:

<style name="MyActionBar" parent="Theme.AppCompat.Light">
    <item name="android:background">@color/action_bar_background</item>

    <item name="background">@color/action_bar_background</item> //<--background item without the android attribute
</style>

а затем в своей пользовательской теме сделайте то же самое для пользовательского стиля панели действий:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>
person Ojonugwa Jude Ochalifu    schedule 01.10.2015