[android] Comment définir la couleur / le style ActionBar personnalisé?


Answers

En général, Android OS utilise un «thème» pour permettre aux développeurs d'application d'appliquer globalement un ensemble universel de paramètres de style d'élément d'interface utilisateur à l'ensemble des applications Android ou, alternativement, à une seule sous-classe Activity.

Il y a donc trois «thèmes système» du système d'exploitation Android, que vous pouvez spécifier dans votre fichier XML de manifeste Android lorsque vous développez des applications pour la version 3.0 et les versions ultérieures.

Je me réfère à la bibliothèque de support (APPCOMPAT) ici: - Les trois thèmes sont donc: 1. Thème AppCompat Light (Theme.AppCompat.Light)

  1. AppCompat Dark Theme (Theme.AppCompat),

  1. Et un hybride entre ces deux, AppCompat Light Theme avec le DarkBar ActionBar. (Theme.AppCompat.Light.DarkActionBar)

AndroidManifest.xml et voir la balise, le thème android est mentionné comme: - android: theme = "@ style / AppTheme"

Ouvrez le fichier Styles.xml et nous avons le thème d'application de base déclaré ici: -

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

Nous devons remplacer ces éléments de thème parent pour styliser la barre d'action.

ActionBar avec un fond de couleur différente: -

Pour ce faire, nous devons créer un nouveau style MyActionBar (vous pouvez donner n'importe quel nom) avec une référence parente à @ style / Widget.AppCompat.Light.ActionBar.Solid.Inverse qui contient les caractéristiques de style pour l'élément d'interface utilisateur Android ActionBar. Donc, la définition serait

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="background">@color/red</item>
</style>

Et cette définition que nous devons référencer dans notre AppTheme, en pointant sur le style ActionBar substitué as--

@ style / MyActionBar

Changez la couleur du texte de la barre de titre (par exemple noir en blanc): -

Maintenant, pour changer la couleur du texte du titre, nous devons remplacer la référence parente parent = "@ style / TextAppearance.AppCompat.Widget.ActionBar.Title">

Donc, la définition de style serait

<style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/white</item>
</style>

Nous ferons référence à cette définition de style dans la définition de style MyActionBar , car la modification TitleTextStyle est un élément enfant d'un élément d'interface utilisateur OS ActionBar. Donc, la définition finale de l'élément de style MyActionBar sera

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="background">@color/red</item>
    <item name="titleTextStyle">@style/MyActionBarTitle</item>
</style>

SO c'est le dernier fichier Styles.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- This is the styling for action bar -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="background">@color/red</item>
        <item name="titleTextStyle">@style/MyActionBarTitle</item>
    </style>

    <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/white</item>
    </style>
</resources>

Pour plus d'options ActionBar Menu style, reportez - vous ce lien

Question

J'utilise la Android Navigation bar dans mon projet, je veux changer la couleur supérieure dans la barre d'action à quelque chose de rouge, Comment puis-je faire cela? J'ai quelque chose comme ça,

et je veux quelque chose comme ça,

comment puis-je y parvenir?




Vous pouvez changer la couleur de la barre d'action de cette façon:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/green_action_bar</item>
</style>

C'est tout ce dont vous avez besoin pour changer la couleur de la barre d'action.

De plus, si vous voulez changer la couleur de la barre d'état, ajoutez simplement la ligne:

 <item name="android:colorPrimaryDark">@color/green_dark_action_bar</item>

Voici une capture d'écran prise du développeur android site pour le rendre plus clair, et voici un link pour en savoir plus sur la personnalisation de la palette de couleur




dans le fichier style.xml ajoutez ce code

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

    <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#333333</item>
    </style>
</resources>



Couleur personnalisée:

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

                <item name="colorPrimary">@color/ColorPrimary</item>
                <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
                <!-- Customize your theme here. -->
     </style>

Style personnalisé

 <style name="Theme.AndroidDevelopers" parent="android:style/Theme.Holo.Light">
        <item name="android:selectableItemBackground">@drawable/ad_selectable_background</item>
        <item name="android:popupMenuStyle">@style/MyPopupMenu</item>
        <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item>
        <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
        <item name="android:actionDropDownStyle">@style/MyDropDownNav</item>
        <item name="android:listChoiceIndicatorMultiple">@drawable/ad_btn_check_holo_light</item>
        <item name="android:listChoiceIndicatorSingle">@drawable/ad_btn_radio_holo_light</item>
    </style>

Pour en savoir plus: Android ActionBar




Related