android android-actionbar android-3.0-honeycomb

Mostrar el icono para los elementos de menú de la barra de acciones en Honeycomb android 3.0



android-actionbar android-3.0-honeycomb (3)

Hola
Estoy desarrollando una aplicación para Android usando Honeycomb android 3.0. Estoy tratando de mostrar un menú en la barra de acción. El menú tiene un ícono y tilda. Cuando hacemos clic en el elemento del menú, se muestran sus elementos en forma de lista desplegable. Fueron los elementos en la lista desplegable con nombres de elementos pero sin el icono que se muestra. Quiero que aparezca un ícono al lado del título en la lista desplegable que aparece cuando hago clic en el menú. ¿Alguien puede ayudarme a resolver este problema? mi archivo xml es el siguiente:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/addserver" android:icon="@android:drawable/ic_menu_add" android:title="Add Server" android:showAsAction="ifRoom|withText" > <menu> <item android:id="@+id/fileserver" android:icon="@android:drawable/ic_menu_add" android:title="File Server" android:onClick="onCreate" android:showAsAction="always"/> <item android:id="@+id/sharepoint" android:icon="@android:drawable/ic_menu_add" android:title="Share Point" android:onClick="onCreate" /> </menu> </item>

Inicialmente muestra agregar servidor con el icono a la izquierda. Al hacer clic en eso, se mostrará el servidor de archivos, compartir como lista desplegable sin el ícono, aunque le di la instrucción android: icon.
¿Alguien puede ayudarme a resolver este problema?
Gracias por adelantado,


El comportamiento donde los iconos no se muestran en el menú de desbordamiento de la barra de acciones es por diseño (a partir de este escrito). Si necesita usar íconos, necesitará escribir una implementación personalizada, considere replantear su diseño para que se ajuste a las convenciones de UI.


En realidad, hay una manera de poner iconos junto a los textos para los elementos del menú:

final MenuItem menuItem=... final ImageSpan imageSpan=new ImageSpan(this,R.drawable.ic_stat_app_icon); final CharSequence title=" "+menuItem.getTitle(); final SpannableString spannableString=new SpannableString(title); spannableString.setSpan(imageSpan,0,1,0); menuItem.setTitle(spannableString);

Esto colocará un icono al comienzo del elemento del menú, justo antes de su texto original.

Por cierto, esto también funcionará en PopupMenu.


Aunque la pregunta original es un poco vieja y, además, porque el razonamiento en contra de mostrar íconos en el menú es algo que carece de sustancia (vea el excelente comentario de Steven Elliott mostrando íconos del menú de Action Bar en Honeycomb android 3.0 ), quisiera señalar una gran solución de trabajo que se dio aquí :

@Override public boolean onMenuOpened(int featureId, Menu menu) { if(featureId == Window.FEATURE_ACTION_BAR && menu != null) { if(menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch(NoSuchMethodException e) { //... } catch(Exception e) { // ... } } } return super.onMenuOpened(featureId, menu); }

Simplemente agregue este código a su actividad e importe los módulos apropiados. De nuevo, no es mi trabajo, pero funciona de todos modos.