Android: colore di background quando viene premuto il menu

Sto provando a cambiare il colore di background alla voce di menu quando viene premuto. Cambiare il colore di background ma non il colore quando viene premuto.

WHISED:

  • Bitmap e outOfMemory in android
  • DriveFolder.listChildren () non mostra tutti i suoi figli
  • Confronto di Android SQLite / ordine di utf8
  • Impedire la rotazione dello schermo su Android
  • come visualizzare ToolTip in android?
  • Il messaggio GCM viene sovrascritto?
    • Sfondo: grigio scuro
    • Sfondo premuto: arancione

    OTTENUTI:

    • Sfondo: grigio scuro
    • Sfondo premuto: blu (Android predefinito)

    Che cosa posso fare? Grazie

    immettere qui la descrizione dell'immagine

    styles.xml

    <style name="AppTheme2" parent="android:Theme.Holo"> <item name="android:popupMenuStyle">@style/MyApp.PopupMenu</item> </style> <style name="MyApp.PopupMenu" parent="android:Widget.Holo.ListPopupWindow"> <item name="android:popupBackground">@drawable/menu_item_selector</item> </style> 

    menu_item_selector.xml

     <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/menu_item_fondo_pressed" android:state_focused="true"/> <item android:drawable="@drawable/menu_item_fondo_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/menu_item_fondo"/> </selector> 

  • Come get le informazioni sulla versione del mercato dell'app google play store?
  • Webview con asynctask su Android
  • Android Abilita TLSv1.2 in OKHttp
  • Convertire l'esistente PHP / MYSQL / sito web per applicazioni native IOS / Android
  • Come submit più sms a un singolo numero
  • "Il dispositivo Android non è elencato durante l'esecuzione di dispositivi adb (ubantu 10.10)"
  • One Solution collect form web for “Android: colore di background quando viene premuto il menu”

    Piccola risposta tarda, ma trovato soluzione per il problema.

    In styles.xml where hai il tuo AppTheme :

     <style name="AppTheme" parent="AppBaseTheme"> <item name="android:dropDownListViewStyle">@style/ListViewStyle</item> <item name="dropDownListViewStyle">@style/ListViewStyle</item> <item name="popupMenuStyle">@style/PopupMenu</item> <item name="textAppearanceLargePopupMenu">@style/PopupMenuTextAppearanceLarge</item> <item name="textAppearanceSmallPopupMenu">@style/PopupMenuTextAppearanceSmall</item> <item name="android:textAppearanceLargePopupMenu">@style/PopupMenuTextAppearanceLarge</item> <item name="android:textAppearanceSmallPopupMenu">@style/PopupMenuTextAppearanceSmall</item> </style> 

    Il popupMenuStyle è per il popupMenu stesso, in questo caso possiamo cambiare lo background non selezionato in elemento popupBackground , come questo (ma lo sappi già):

     <style name="PopupMenu" parent="@android:style/Widget.PopupMenu"> <item name="android:popupBackground">@drawable/selector_popup_menu_bg</item> <item name="android:textColor">@color/text_color_white</item> <item name="android:dropDownSelector">@drawable/selector_popup_menu_dropdown</item> </style> 

    Ci sono anche elementi textColor e dropDownSelector , che non stanno facendo nulla sui dispositivi che ho testato, ma li modifico anche in questo caso, perché anche il padre ( Widget.PopupMenu ) li usa.

    Il modo per modificare correttamente questi elementi è cambiarli in AppTheme come mostrato sopra nel codice AppTheme . Non mostrerò codice per il textAppearance, perché non è il sobject.

    Il motivo per cui ho aggiunto due volte a ciascuno di questi elementi (con e senza "android:" prefisso) è farlo funzionare sia su dispositivi 5.0 che pre-lollipop. L'unica exception è popupMenuStyle con solo bisogno di elemento senza prefisso "android:".

    Per avere background differente di elemento selezionato, semplicemente cambiarlo in dropDownListViewStyle (ho aggiunto ulteriormente il divisore ):

     <style name="ListViewStyle" parent="@android:style/Widget.ListView"> <item name="android:listSelector">@drawable/selector_popup_menu_dropdown</item> <item name="android:divider">@color/text_color_white</item> <item name="android:dividerHeight">1dp</item> </style> 

    La parte interessante è listSelector , che è lo background dell'elemento selezionato. Se aggiungiamo solo l'elemento @color, l'elemento selezionato non sarebbe correttamente invalidato (rimarrà selezionato anche se si sposta la selezione fuori di esso), per renderlo correttamente anziché colore, è necessario utilizzare il selettore:

    selector_popup_menu_dropdown.xml

     <?xml version="1.0" encoding="utf-8"?> 

     <item android:state_window_focused="false" android:drawable="@android:color/transparent" /> <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> <item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@color/gray_btn_bg_color" /> <item android:state_focused="true" android:state_enabled="false" android:drawable="@color/gray_btn_bg_color" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/gray_btn_bg_color" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@color/gray_btn_bg_color" /> <item android:state_focused="true" android:drawable="@color/gray_btn_bg_color" /> 

    Una spiegazione troppo lunga per una simile cosa trivalente, ma abbiamo fatto fino alla fine. Yaay!

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.