12

Sto preparando la mia app per Android 5.0, sto usando l'ultima libreria di compatibilità, ecco come appare il mio stile.Stile del menu popup in Android 5.0

<resources> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="colorPrimary">@color/theme_accent</item> 
     <item name="colorAccent">@color/theme_accent_secondary</item> 
    </style> 

    <style name="AppThemeDark" parent="Theme.AppCompat"> 
     <item name="colorPrimary">@color/theme_accent</item> 
     <item name="colorAccent">@color/theme_accent_secondary</item> 
    </style> 
</resources> 

(Il colore ActionBar è stato impostato a livello di codice.)

Ora, voglio il menu di overflow/pop-up per avere il fondo scuro come se avesse l'attuazione ologramma, ma non posso farlo per funzionare, ecco come appare: enter image description here

Ho provato a impostare il popupMenuStyle ma non ha funzionato.

Come posso rendere più scuro il menu popup?

+0

Come hai creato con menu di overflow icone? – user802421

+0

Quello di base del menu di overflow ignora le icone. http://stackoverflow.com/questions/5216603/displaying-icon-for-menu-items-of-action-bar-in-honeycomb-android-3-0/5216625#5216625 – user802421

+0

Prova questo: android: showAsAction = " sempre " – animaonline

risposta

6

Ha risolto il problema utilizzando questo stile:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/theme_accent</item> 
    <item name="colorAccent">@color/theme_accent_secondary</item> 
    <item name="actionBarStyle">@style/AbStyle</item> 
    <item name="actionModeBackground">@color/actionmode_bg</item> 
</style> 

<style name="AbStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="elevation">2dp</item> 
    <item name="displayOptions">homeAsUp|showTitle</item> 
    <!--showHome--> 
</style> 

<style name="AppThemeDark" parent="Theme.AppCompat"> 
    <item name="colorAccent">@color/theme_accent_secondary</item> 
    <item name="actionBarStyle">@style/AbStyle</item> 
</style> 

ho dovuto usare Widget.AppCompat.Toolbar come actionBarStyle genitore

5

Aggiungere il popupTheme proprietà alla 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_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/color_primary" 
    app:theme="@style/Theme.AppCompat.Light" 
    app:popupTheme="@style/Theme.AppCompat" /> 

o definire un nuovo stile per la vostra barra degli strumenti:

<style name="MyToolBarStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="android:background">@color/green</item> 
    <item name="popupTheme">@style/Theme.AppCompat.Light</item> 
    <item name="theme">@style/Theme.AppCompat</item> 
</style> 
+1

Sto usando un ActionBar, quindi non mi aiuta molto :( – animaonline

+0

Ciao , Possiamo cambiare la dimensione delle voci del menu a comparsa? –

19

Interrompere l'utilizzo del ActionBar. Se si desidera impostare ToolBar come ActionBar, seguire this guide sul blog degli sviluppatori Android.

Si cita in realtà il vostro caso d'uso a scuro Barra azioni e fornisce questo codice:

<android.support.v7.widget.Toolbar 
    android:layout_height=”wrap_content” 
    android:layout_width=”match_parent” 
    android:minHeight=”@dimen/triple_height_toolbar” 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
+0

Perché dovrei voler smettere di usare la barra delle azioni? Non è come se fosse stato deprecato. – animaonline

+5

@animaonline la barra degli strumenti è un superset di ActionBar (semplicemente un layout estratto avvolto) Puoi usare qualsiasi cosa tu abbia già fatto, e altro ancora. Alla fine l'ActionBar sarà sostituito. La libreria di supporto corrente ha alcuni bug quando si tratta di supportare la barra di azione precedente, come forse avete notato. –

+0

Ne sono consapevole, ho un'app davvero complessa con molti frammenti e navigazione personalizzata, ActionBar fa il lavoro molto bene, non ho bisogno di nessuna delle nuove funzionalità dalla barra degli strumenti, quindi vado avanti con la AB per ora, apprezzo le tue raccomandazioni ma non mi aiuteranno molto. – animaonline

9

Non è una risposta completa, ma quello che ho trovato finora:

Nelle versioni precedenti avete avuto bisogno di specificare un drawable (controllare il codice https://github.com/StylingAndroid/StylingActionBar e le esercitazioni)

Apparentemente, ora è un colore. Per modificarlo è necessario specificare il seguente tema:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar"> 
     <item name="android:actionBarPopupTheme">@style/popupNew</item> 
    </style> 

    <style name="popupNew" parent="android:ThemeOverlay.Material.Light"> 
     <item name="android:colorBackground">@color/red</item> 
    </style> 

</resources> 

Questo funziona correttamente se il tema applicato all'app è proprio questo. Se aggiungo android:actionBarPopupTheme al tema esistente, non funziona. Sto cercando di capire perché.

+0

questo funziona. ma come modificare l'ombra della finestra popup della barra delle azioni? – Jonguo

+0

La risposta corretta è che il tuo tema chiama lo stile "actionBarPopupTheme" e quindi nello stile devi aggiungere il genitore per "ThemeOverlay". L'ho fatto e ha funzionato. La ringrazio per la risposta! – Brandon

Problemi correlati