Menú desplegable Styling ActionBar

Estoy usando un tema personalizado que hereda de DarkActionBar y quiero personalizar el menú desplegable para que sea blanco al igual que cuando se usa el tema de Light Holo.

He podido cambiar el fondo a blanco usando:

 <style name="MyTheme" parent="@style/Theme.Light.DarkActionBar"> <item name="android:actionDropDownStyle">@style/MyDropDownNav</item> </style> <style name="MyDropDownNav"> <item name="android:background">@drawable/spinner_background_white</item> <item name="android:popupBackground">@drawable/menu_dropdown_panel_whyite</item> <item name="android:dropDownSelector">@drawable/selectable_background_white</item> </style> 

Pero no tengo ni idea de cómo cambiar el color del texto a negro. Porque después de fijar el blanco dibujable el problema es que el texto no es visible porque es blanco en el fondo blanco.

Me respondo después de alguna investigación. Además del estilo de la pregunta usted necesita:

  • Personalizar android:spinnerDropDownItemStyle para actionBarWidgetTheme cambiar su apariencia de texto.
  • También no se olvide que la lista desplegable es manejada por el adaptador que usted utiliza. Entonces si usted utilizó el estándar ( simple_dropdown_item_1line ) no hay ningún problema. Pero si usas una personalizada como yo (para poder añadir un icono) no te olvides de aplicar style="?attr/spinnerDropDownItemStyle" en tu presentación TextView.

Entonces el estilo personalizado final es:

 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.myapp" parent="@style/Theme.Light.DarkActionBar"> <item name="android:actionDropDownStyle">@style/myapp_DropDownNav</item> <item name="android:actionBarWidgetTheme">@style/myapp.actionBarWidgetTheme</item> </style> <style name="myapp.actionBarWidgetTheme" parent="@style/Theme."> <item name="android:spinnerDropDownItemStyle">@style/myapp.Widget.DropDownItem.Spinner</item> </style> <style name="myapp_DropDownNav" parent="@style/Widget.Spinner.DropDown.ActionBar"> <item name="background">@drawable/spinner_background_ab_myapp</item> <item name="android:background">@drawable/spinner_background_ab_myapp</item> <item name="android:popupBackground">@drawable/menu_dropdown_panel_myapp</item> <item name="android:dropDownSelector">@drawable/selectable_background_myapp</item> </style> <style name="myapp.Widget.DropDownItem.Spinner" parent="Widget.DropDownItem.Spinner"> <item name="android:textAppearance">@style/myapp.TextAppearance.Widget.DropDownItem</item> </style> <style name="myapp.TextAppearance.Widget.DropDownItem" parent="TextAppearance.Widget.DropDownItem"> <item name="android:textColor">@color/black</item> </style> 

Donde myapp_DropDownNav en myapp_DropDownNav son los de fondo blanco que puedes generar con el generador de estilo ActionBar en Android Asset Studio

Intente establecer itemTextAppearance . Eso debe lograr lo que quieres.

He tropezado con lo que puede ser la forma más sencilla de hacer esto. Yo estaba trabajando con la biblioteca AppCompat.

 <style name="ApplicationTheme" parent="@style/Theme.AppCompat"> <item name="android:actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> <item name="actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> </style> 

Mi consejo es simplemente heredar del tema Sherlock.Light y cambiar los campos aplicables a los valores Dark. Para mi aplicación, queríamos un icono blanco "arriba" y un texto blanco para las etiquetas de acción. No proveo versiones oscuras de mis iconos de barra de acción, por lo que son todos blancos de todos modos. Así que después de varias horas jugando con él y siguiendo las sugerencias de diferentes personas, finalmente encontré lo que estaba buscando en el archivo de temas de ABS.

Heredo de Sherlock.Light (bueno, técnicamente HoloEverywhereLight.Sherlock pero …) y el cambio:

 <item name="android:actionMenuTextColor">@color/White</item> <item name="actionMenuTextColor">@color/White</item> <item name="android:homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item> <item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item> <item name="android:dividerVertical">@drawable/abs__list_divider_holo_dark</item> <item name="dividerVertical">@drawable/abs__list_divider_holo_dark</item> 

Eso es. Es más simple y más fácil que tratar de extender clases, restyle cosas en el código, etc

  • Configuración de Theme.Holo.Light cambia todo, excepto las casillas de verificación en la lista
  • Tema predeterminado de Android
  • Cambiar el color de resaltado y título de los fragmentos en PreferenceActivity
  • ¿Cómo cambiar de tema (modo nocturno) sin reiniciar la actividad?
  • Tema personalizado en Android
  • Soporte ActionBar no mostrará el color correcto con API 21
  • Implementación de la elección por el usuario del tema
  • Vista previa de tema falla en Eclipse
  • Cambiar el color del tema en Runtime en Android
  • Aplicación del tema AppCompat a las preferencias individuales en un archivo PreferenceFragment
  • Configuración del color de fondo del tema de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.