Styling Sherlock Barra de Acción desplegable artículos

He estado intentando por un tiempo para el estilo de los elementos en una lista desplegable que he añadido a la barra de acción, pero no puedo llegar con el código correcto.

Intenté mirar en el abs__styles.xml y abs__themes.xml en el proyecto de SherlockActionBar pero ningunos de los artículos que agregué a mi proyecto trabajaron.

La forma en que estoy creando los menús es la siguiente:

 @Override public boolean onCreateOptionsMenu(Menu menu) { // Sharing icons SubMenu submenu = menu.addSubMenu(null); submenu.add(getResources().getString(R.string.twitter)); submenu.add(getResources().getString(R.string.facebook)); submenu.add(getResources().getString(R.string.email)); // Share button itself MenuItem ShareButton = submenu.getItem(); ShareButton.setIcon(R.drawable.icon_share_triangle); ShareButton.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); // Twitter submenu button MenuItem TwitterItem = submenu.getItem(0); TwitterItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); TwitterItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { setShareTwitterIntent(); return true; } }); ... } 

También he intentado echar un vistazo a este post utilizando el siguiente código, pero aún así no hay suerte:

 <!-- style the list navigation --> <style name="MyDropDownNav" parent="android:style/Widget.Holo.Light.Spinner.DropDown.ActionBar"> <item name="android:background">@drawable/ad_spinner_background_holo_light</item> <item name="android:popupBackground">@drawable/ad_menu_dropdown_panel_holo_light</item> <item name="android:dropDownSelector">@drawable/ad_selectable_background</item> </style> 

Sólo necesito cambiar el color de fondo de los artículos en la lista desplegable.

¡Muchas gracias por tu ayuda!

EDITAR:

También he intentado esto, y todavía no funciona:

 <item name="android:actionDropDownStyle">@style/MyApp.DropDownNav</item> <item name="actionDropDownStyle">@style/MyApp.DropDownNav</item> ... <style name="MyApp.DropDownNav" parent="Widget.Sherlock.Light.Spinner.DropDown.ActionBar"> <item name="android:background">@drawable/sharing_panel</item> </style> 

5 Solutions collect form web for “Styling Sherlock Barra de Acción desplegable artículos”

Tuve el mismo problema y después de un montón de rascarse la cabeza – la clase de rascarse como un perro con un mal caso de las pulgas – lo conseguí para trabajar. Esto es con ABS 4.1 (90). El siguiente código cambiará el color de fondo del elemento desplegable.

SomeActivity.java

 Context context = ab.getThemedContext(); ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource( context, R.array.map_activity_view_list, R.layout.sherlock_spinner_item); list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); 

Nota: Utiliza R.layout.sherlock_spinner_item para el createFromResource y el R.layout.sherlock_spinner_dropdown_item para el setDropDownViewResource. Esto es lo que aparece en la muestra en la fuente ABS: https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/demos/src/com/actionbarsherlock/sample/demos/ListNavigation.java

Esto se debe a que la lista desplegable no seleccionada en la barra de acción cuando es el diseño sherlock_spinner_item y los elementos desplegables reales usan el diseño sherlock_spinner_dropdown_item, lo que significa que los estilos son diferentes para cada uno:

  • Sherlock_spinner_item
    • Androide: spinnerItemStyle
    • SpinnerItemStyle
  • Sherlock_spinner_dropdown_item
    • Androide: spinnerDropDownItemStyle
    • SpinnerDropDownItemStyle

Recuerde que ambos estilos son necesarios – android: estilos prefijados para el nativo ICS ActionBar y el estilo sin el prefijo android: es para el estilo AcrionBarSherlock en dispositivos anteriores a ICS.

Res / values ​​/ styles.xml

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme.MyApp" parent="Theme.Sherlock.Light"> <!-- the text when loading --> <!-- <item name="actionBarStyle">@style/Widget.MyApp.ActionBar</item> <item name="android:actionBarStyle">@style/Widget.MyApp.ActionBar</item> --> <!-- the dropdown items --> <item name="android:spinnerDropDownItemStyle">@style/MyApp.Widget.Holo.DropDownItem</item> <item name="spinnerDropDownItemStyle">@style/MyApp.Widget.Holo.DropDownItem</item> <!-- the action bar dropdown menu item --> <!-- <item name="android:spinnerItemStyle">@style/MyApp.Widget.Holo.SpinnerItem</item> <item name="spinnerItemStyle">@style/MyApp.Widget.Holo.SpinnerItem</item> --> </style> <style name="Widget.MyApp.ActionBar" parent="Widget.Sherlock.Light.ActionBar"> <item name="titleTextStyle">@style/Widget.MyApp.TitleTextStyle</item> <item name="android:titleTextStyle">@style/Widget.MyApp.TitleTextStyle</item> </style> <style name="Widget.MyApp.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title"> <item name="android:textColor">@color/orange</item> </style> <style name="MyApp.Widget.Holo.DropDownItem" parent="Widget.Sherlock.Light.DropDownItem.Spinner"> <item name="android:background">@color/orange</item> </style> <style name="MyApp.Widget.Holo.SpinnerItem" parent="Widget.Sherlock.TextView.SpinnerItem"> <item name="android:background">@color/orange</item> </style> </resources> 

Res / values ​​/ color.xml

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="orange">#ffEf4f1f</color> </resources> 

Por favor marque como respuesta si esto lo resuelve para usted. ¡Gracias!

Campo de golf:

Examinar estilos:

https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/values/abs__styles.xml

Examinar temas:

https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/values/abs__themes.xml

Para cambiar el fondo dibujable del elemento de menú en Sherlock Action Bar (v4.1.0), utilice lo siguiente:

 <style name="My_Theme" parent="Theme.Sherlock"> <item name="android:popupMenuStyle">@style/MyApp.PopupMenuStyle</item> <item name="popupMenuStyle">@style/MyApp.PopupMenuStyle</item> </style> <style name="MyApp.PopupMenuStyle" parent="Widget.Sherlock.ListPopupWindow"> <item name="android:popupBackground">@drawable/menu_item_background</item> </style> 

espero que esto ayude.

Usé esto, y su trabajo para mí

 <style name="MyDropDownItem" parent="Widget.Sherlock.Spinner.DropDown.ActionBar"> <item name="android:background">@drawable/spinner_background_holo_light</item> <item name="android:popupBackground">@color/actionbar_normal</item> <item name="android:dropDownSelector">@drawable/list_selector_holo_light</item> </style> <style name="myTheme" parent="@style/Theme.Sherlock"> ... ... ... <item name="android:actionDropDownStyle">@style/MyDropDownItem</item> <item name="actionDropDownStyle">@style/MyDropDownItem</item> </style> 

dónde,

"Spinner_background_holo_light" y "list_selector_holo_light" son selectores

y

"Actionbar_normal" dibujable (imagen O color)

No estoy seguro si esta pregunta ha sido contestada de una manera satisfactoria, pero me encontré con este problema y no encontré una respuesta que me gustó. Parecía que tenía una configuración bastante estándar de ActionBarSherLock y el uso de la navegación desplegable me dio algunos malos resultados fuera de la caja. Texto negro sobre un fondo negro. Quiero hacer el texto blanco. Aquí es cómo lo logré:

Para empezar, el tema base de mi aplicación se extiende Theme.Sherlock:

 <style name="AppBaseTheme" parent="Theme.Sherlock"> </style> 

Mi tema de aplicación real AppTheme extiende mi base (no puedo recordar por qué hice esto en el momento, es probable innecesario).

 <style name="AppTheme" parent="AppBaseTheme"> <item name="spinnerItemStyle">@style/SpinnerItemStyle</item> <item name="android:spinnerItemStyle">@style/SpinnerItemStyle</item> </style> 

Necesitaba anular Widget.Sherlock.TextView.SpinnerItem y por lo que a continuación:

 <style name="SpinnerItemStyle" parent="Widget.Sherlock.TextView.SpinnerItem"> <item name="android:textAppearance">@style/TextAppearance.MySpinnerItem</item> </style> 

La razón para hacerlo era para acceder al widget TextAppearance.Sherlock.Widget.TextView.SpinnerItem : TextAppearance.Sherlock.Widget.TextView.SpinnerItem

Esto se anuló como se indica a continuación:

 <style name="TextAppearance.MySpinnerItem" parent="TextAppearance.Sherlock.Widget.TextView.SpinnerItem"> <item name="android:textColor">#FFFFFF</item> <item name="android:textSize">16sp</item> <item name="android:textStyle">normal</item> </style> 

Mi error más grande en atar para conseguir el texto en intentar fijar esto estaba intentando fijar directamente textColor en el SpinnerItemStyle sobreescrito. Desde que utilizó un widget textAppearance, simplemente no funcionaba.

Entonces mi código para hacer este trabajo se parece a esto (en el método onCreate de mi actividad):

 SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(this, R.array.call_type, R.layout.sherlock_spinner_item); OnNavigationListener onNavigationListener = new OnNavigationListener() { // Get the same strings provided for the drop-down's ArrayAdapter String[] strings = getResources().getStringArray(R.array.call_type); @Override public boolean onNavigationItemSelected(int position, long itemId) { String filter = strings[position]; filterCalls(filter); return true; } }; ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); actionBar.setListNavigationCallbacks(spinnerAdapter, onNavigationListener); 

Esto permitió que mi cambiara el color del texto, en el hilandero abajo usando ActionBarSherlock.

ActionBarSherlock requiere que utilices uno de sus 3 temas. Sin embargo, puede extenderlas y anular el estilo desplegable, de la siguiente manera:

 <style name="MySherlockLightTheme" parent="Theme.Sherlock.Light"> <item name="actionDropDownStyle">@style/MyDropDownNav</item> </style> 

Esto es suponiendo que desea el tema de luz holo, y su estilo de lista desplegable es MyDropDownDav.

Entonces en su código, usted apenas cambia para utilizar su tema (o en el manifiesto, o lo hace en onCreate de la actividad).

  • Selector de ícono, subtítulo y lista desplegable de la barra de acción de Android
  • Spinner dropUP en lugar de dropDOWN android
  • Personalización del spinner de Actionbar
  • Selección de varios valores de la lista desplegable
  • Cómo crear el menú desplegable en un clic de botón
  • Cómo agregar DropDown en la aplicación de Android
  • Cómo personalizar el menú desplegable AutoCompleteTextView en Android
  • La mejor manera de crear menú desplegable en android 2.x como en ICS
  • Android menú desplegable (sin girador!)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.