Цвят на фона на AppCompat ActionBar

Имам този 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