web-dev-qa-db-fra.com

Modification de la couleur d'arrière-plan et du texte du thème AppCompat Light DarkActionBar sur android

J'ai utilisé le thème AppCompat Light DarkActionBar pour mon application.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">        
</style>

enter image description here

Est-il possible de changer la couleur d'arrière-plan et la couleur du texte de cette ActionBar? Si oui, comment?

17
Gissipi_453

Le code suivant vous permettra de styliser complètement la barre d'action.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/Widget.AppTheme.ActionBar</item>
    <item name="actionBarTheme">@style/ThemeOverlay.AppTheme.ActionBar</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppTheme.PopupMenu</item>
</style>

Remplacez le style de la barre d'action pour modifier la couleur ou l'élévation de l'arrière-plan.

<style name="Widget.AppTheme.ActionBar" parent="Widget.AppCompat.ActionBar.Solid">
    <!-- action bar background - without Android prefix -->
    <item name="background">...</item>
    <!-- action bar elevation - without Android prefix -->
    <item name="elevation">4dp</item>
</style>

Remplacez le thème de la barre d'action pour définir un comportement spécial pour toutes les vues à l'intérieur de la barre d'action telles que les éléments d'action, la couleur d'arrière-plan ondulée, la couleur du texte.

<style name="ThemeOverlay.AppTheme.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <!-- title text color -->
    <item name="Android:textColorPrimary">...</item>
    <!-- subtitle text color -->
    <item name="Android:textColorSecondary">?android:textColorPrimary</item>
    <!-- action menu item text color -->
    <item name="actionMenuTextColor">?android:textColorPrimary</item>
    <!-- action menu item icon color -->
    <item name="colorControlNormal">?android:textColorPrimary</item>
</style>

Vous pouvez également modifier le thème contextuel.

<style name="ThemeOverlay.AppTheme.PopupMenu" parent="ThemeOverlay.AppCompat.Dark">
    <!-- popup menu background - NEVER "Android:background" !!! in themes -->
    <item name="Android:colorBackground">...</item>
    <!-- popup menu item text color -->
    <item name="Android:textColorPrimary">...</item>
</style>

En revanche, le code suivant vous permettra de styliser la fenêtre .

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- window background - NEVER "Android:background" in themes !!! -->
    <item name="Android:windowBackground">...</item>
    <item name="Android:textColorPrimary">...</item>
    <item name="Android:textColorSecondary">...</item>
</style>

Vous pouvez également modifier directement la couleur du texte dans la barre d'action. Mais méfiez-vous! Cela n'affectera pas la couleur du texte des éléments de menu ou des icônes ou la couleur d'ondulation! Ce n'est probablement pas ce que vous voulez à long terme.

<style name="Widget.AppTheme.ActionBar" parent="Widget.AppCompat.ActionBar.Solid">
    <!-- title text color -->
    <item name="titleTextColor">?android:textColorPrimary</item>
    <!-- subtitle text color -->
    <item name="subtitleTextColor">?android:textColorSecondary</item>
</style>
48
Eugen Pechanec

Oui, il est possible de changer la couleur du texte sur la barre d'action. Ajoutez ceci dans votre activité onCreate:

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  
2
onexf