web-dev-qa-db-fra.com

Styling ActionMode ActionBar dans Android 5.0 Lollipop (avec AppCompat)

J'ai utilisé ce tutoriel pour améliorer mon application Holo pour Lollipop: http://Android-developers.blogspot.ru/2014/10/appcompat-v21-material-design-for-pre.html

Ce que j'ai:

  1. Thème

    <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
      <item name="windowActionModeOverlay">true</item>
      <item name="colorPrimary">@color/theme_primary</item>
      <item name="colorPrimaryDark">@color/theme_primary_dark</item>
      <item name="colorAccent">@color/theme_accent</item>
    </style>
    
  2. Disposition de la barre d'outils

    <Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
      xmlns:app="http://schemas.Android.com/apk/res-auto"
      Android:id="@+id/toolbar"
      Android:layout_height="wrap_content"
      Android:layout_width="match_parent"
      Android:minHeight="?attr/actionBarSize"
      Android:background="?attr/colorPrimary"
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    
  3. Activité héritée d'ActionBarActivity avec un fragment ListFragment en mode multi-choix

    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

Résultat : la barre d'outils est OK. Il utilise les couleurs de thème spécifiées, mais le ActionBar utilisé par le ListFragment dans le ActionMode (activé en appuyant longuement sur un élément de liste) a les couleurs standard Dark.ActionBar. Le menu contextuel de la barre d'action utilise également le thème sombre.

J'ai essayé toutes les astuces SO, mais je ne peux toujours pas résoudre ce problème. J'apprécierai toute aide.

BTW. J'ai constaté que les couleurs sombres de l'ActionBar sont causées par le app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" De la barre d'outils, mais je n'ai aucune idée de la façon de résoudre ce problème, car cet attribut est nécessaire pour l'apparence correcte de la barre d'outils.

Toolbar with correct colorsDark ActionBar

38
Andrey Shcherbakov

Ajoutez simplement ces deux lignes au thème:

<item name="actionModeBackground">@color/theme_primary_dark</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
76
Andrey Shcherbakov

Cela pourrait également être utile en plus de la réponse de @ Andrey Shcherbakov si vous souhaitez avoir plus de contrôle sur chaque couleur individuelle.

<!-- action bar title text color, icon color (ie: back icon, icons when editing text)-->
<item name="Android:textColorPrimary">#FFFF00</item>

<!-- action bar background color-->
<item name="Android:colorBackground">#444400</item>

<!-- color of line under contextual action bar-->
<item name="colorControlActivated">#00CC00</item>
3
waynesford