2

У меня есть эта style.xml внутри моего Android приложения:AppCompat ActionBar Цвет фона

<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> 

Я искал StackOverflow и Google, но ничего не помогало. Я не смог изменить цвет фона ActionBar.

Внутри моей 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.

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

+0

Надеюсь, что это помогает! http://stackoverflow.com/questions/23155637/change-background-color-of-the-action-bar-using-appcompat – Neha

+0

Уже пробовал, не работал – K213

ответ

0

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

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

0

Чтобы использовать цвет фона с помощью 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> 

, а затем в вашей темы сделать то же самое для стиля пользовательского ActionBar:

<!-- 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> 
Смежные вопросы