Comment définir custom ActionBar couleur / style?

j'utilise Android Navigation bar dans mon projet, Je veux changer la couleur du haut de la barre d'action en quelque chose de rouge, Comment puis-je faire cela? J'ai quelque chose comme ça,

top black

et je veux quelque chose comme ça,

top red

comment puis-je y parvenir?

72
demandé sur Philipp Jahoda 2013-08-17 15:41:32

9 réponses

vous pouvez définir la couleur de la barre D'action (et d'autres choses) par création d'un Style personnalisé :

éditez simplement le res/values/styles.fichier xml de votre projet Android.

par exemple comme ceci:

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

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

Ensuite, mettez "MyCustomTheme" comme thème de votre activité qui contient la barre d'action.

vous pouvez également définir un couleur pour L'ActionBar comme ceci:

ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED)); // set your desired color

tiré de ici: Comment changer la couleur de fond de la barre D'Actiond'une Activitépour Actionen utilisant XML?

156
répondu Philipp Jahoda 2017-05-23 11:54:50

en général, Android OS utilise un" thème " pour permettre aux développeurs d'applications d'appliquer globalement un ensemble universel de paramètres de style D'éléments UI aux applications Android dans leur ensemble, ou, alternativement, à une seule sous-classe D'activité.

il y a donc trois "thèmes de système" pour Android OS, que vous pouvez spécifier dans votre fichier Android Manifest XML lorsque vous développez des applications pour la Version 3.0 et les versions suivantes

je fais référence au (APPCOMPAT)bibliothèque de soutien ici:-- Ainsi, les trois thèmes sont 1. AppCompat Light Thème (Thème.AppCompat.De la lumière)

enter image description here

  1. AppCompat Thème Sombre(Thème.AppCompat),

enter image description here

  1. et un hybride entre ces deux, AppCompat thème léger avec le plus Sombre de ActionBar.( Thème.AppCompat.Lumière.DarkActionBar)

AndroidManifest.xml et de voir le tag, le thème android est mentionné que:-- android:thème="@style/AppTheme"

ouvrir les 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 outrepasser ces éléments du thème parent pour styliser la barre d'action.

ActionBar avec fond de couleur différente: --

pour ce faire, nous avons besoin de créer un nouveau style MyActionBar(vous pouvez donner n'importe quel nom) avec une référence de parent @style/Widget.AppCompat.Lumière.ActionBar.Solide.Inverse qui détient les caractéristiques de style pour L'élément ActionBar UI Android. 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 nous devons faire référence dans notre Appthème, pointant vers dépassé ActionBar style que:

@style/MyActionBar ActionBar with pink background color

changer la couleur du texte de la barre de titre (E. g noir à blanc):--

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

So la définition du 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 à l'intérieur de la définition de style MyActionBar , puisque la modification TitleTextStyle est un élément enfant d'un élément parent OS UI ActionBar. Ainsi, 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>

donc c'est le style final.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>

ActionBar With white title color Pour plus D'ActionBar options style Menu, se référer à ce lien

47
répondu Nicks 2017-05-23 12:18:17

pour Android 3.0 et supérieur seulement

lorsque vous supportez Android 3.0 et supérieur seulement, vous pouvez définir le fond de la barre d'action comme ceci:

res/values/thèmes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme" parent="@style/Theme.Holo.Light.DarkActionBar">
       <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>

<!-- ActionBar styles -->
  <style name="MyActionBar" parent="@style/Widget.Holo.Light.ActionBar.Solid.Inverse">
       <item name="android:background">#ff0000</item>
  </style>
</resources>

pour Android 2.1 et supérieur

lors de l'utilisation de la bibliothèque de Soutien, votre fichier XML de style pourrait ressembler à ceci:

<?xml version="1.0" encoding="utf-8"?>
  <resources>
  <!-- the theme applied to the application or activity -->
 <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>

    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<!-- ActionBar styles -->
<style name="MyActionBar"
       parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@drawable/actionbar_background</item>

    <!-- Support library compatibility -->
    <item name="background">@drawable/actionbar_background</item>
  </style>
 </resources>

alors appliquer votre thème à l'ensemble de votre application ou activités individuelles:

pour plus de détails Documentaion

32
répondu Ketan Ahir 2014-09-19 01:36:02

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.

Plus si vous voulez changer la couleur de la barre d'état il suffit d'ajouter la ligne:

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

Voici une capture d'écran Prise À partir de développeur android site pour le rendre plus clair, et voici un lien pour en savoir plus sur la personnalisation de la couleur palete

enter image description here

26
répondu Gjoko Bozinov 2015-08-24 12:32:43

une Autre possibilité de faire.

actionBar.setbackground drawable (new ColorDrawable (Color.parseColor ("#0000ff")));

7
répondu Levi Saturnino 2014-05-06 20:08:30

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>

Personnaliser Le Style:

 <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 Plus De Détails: Android ActionBar

3
répondu Half Moon 2016-01-16 14:30:46

comme j'utilisais AppCompatActivity ci-dessus, les réponses n'ont pas fonctionné pour moi. Mais la solution ci-dessous a fonctionné:

Dans res/styles.xml

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
</style>



PS: j'ai utilisé colorPrimary au lieu de android:colorPrimary

2
répondu zackygaurav 2015-11-02 08:39:59

dans le style.ajouter 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>
1
répondu Milaaaad 2015-05-23 16:16:45

utilisez ceci - http://jgilfelt.github.io/android-actionbarstylegenerator/

Bon outil pour personnaliser votre actionbar avec un aperçu en direct dans quelques minutes.

0
répondu chanu 2015-12-10 11:19:38