38

Ho usato questo tutorial per lifting mia Holo app per Lollipop: http://android-developers.blogspot.ru/2014/10/appcompat-v21-material-design-for-pre.htmlStyling ActionMode ActionBar in Android 5.0 Lollipop (con AppCompat)

Quello che ho:

  1. Tema

    <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. Layout barra degli strumenti

    <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. Attività ereditato da ActionBarActivity con un frammento ListFragment in modalità multi-scelta

    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

Risultato: La barra degli strumenti è OK. Utilizza i colori del tema sepcificati, ma l'ActionBar utilizzato da ListFragment in ActionMode (attivato toccando e tenendo premuto un elemento della lista) ha i colori standard Dark.ActionBar. Anche il menu popup della barra delle azioni utilizza il tema scuro.

Ho provato tutti i trucchi SO, ma non riesco ancora a risolverlo. Apprezzerò qualsiasi aiuto.

BTW. Ho scoperto che i colori scuri di ActionBar sono causati dalla barra degli strumenti app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar", ma non ho idea di come risolverlo, perché questo attributo è necessario per l'aspetto della barra degli strumenti corretto.

Toolbar with correct colorsDark ActionBar

risposta

75

Basta aggiungere queste due righe al tema:

<item name="actionModeBackground">@color/theme_primary_dark</item> 
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item> 
+0

Dopo un sacco di tempo trascorso su questo problema, questo funziona davvero. Grazie! – Sandra

+29

Ho sprecato un sacco di tempo cercando di farlo funzionare, solo per rendermi conto che, per farlo funzionare nella barra degli strumenti di AppCompat, devi rimuovere la parte _ "android:" _ del nome dell'oggetto. Sperando che questo aiuti altre persone a leggere questo thread :) – Jun

+1

grazie! per quanto riguarda il colore della barra di stato? diventa bianco quando viene visualizzato 'actionmode'? – sajad

3

Questo potrebbe anche essere utile in aggiunta a @Andrey Shcherbakov 's risposta, se si vuole avere un maggiore controllo di ogni singolo colore.

<!-- 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> 
Problemi correlati