¿Cómo mostrar iconos en el menú de desbordamiento de ActionBar?

Quiero mostrar el icono además del título del elemento de menú en el menú desplegable.

¿Es posible?

Poner su menú con la propiedad android:showAsAction="always" y en el archivo xml del menú añadir submenús en virtud de que su menú como este

 <item android:id="@+id/mainMenu" android:icon="@drawable/launcher" android:showAsAction="always"> <menu> <item android:id="@+id/menu_logout" android:icon="@drawable/log_out" android:title="logout"/> </menu> </item> 

Esto mostrará los iconos en los menús

Realmente hay una manera fácil de lograrlo, ya que lo que ves es en realidad un TextView, por lo que se establece un intervalo, por ejemplo:

 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 pondrá un icono al principio del elemento de menú, justo antes de su texto original.

El odio responde así, pero no soy lo suficientemente bueno para dar una mejor respuesta.

El icono de los elementos de desbordamiento para el menú es la línea submenu2 "subMenu2Item.setIcon (R.drawable.ic_launcher)"; Simplemente reemplace ic_launcher con su archivo de iconos (en el directorio resizable de su programa). Espero que quieras usar ActionBarSherlock.

La línea subMenu1Item.setIcon (R.drawable.ic_launcher); Es para el icono de ActionBar para el botón de menú en la parte superior.

En respuesta a "Esto no es posible por diseño"

Muchas gracias a Google por intentar hacerse con el mundo y dejarnos montar su capa de colas, PERO … Google es demasiado inconsistente para ser gruñón sobre inconsistencias. Sería bueno que Google pudiera hacer un ejemplo para CADA "conjunto" de API que ofrecen. Hay referencias de API al código, pero no hay ejemplo sobre cómo juntarlas, Todo un ejemplo completamente funcional que se puede ejecutar como un APK es todo lo que quiero. Lo puedo engañar desde allí. Si pueden tomar el tiempo para escribir el APK ¿cuánto más difícil sería codificar un pequeño ejemplo en una plantilla estándar? Para el 30% de todo no es mucho pedir. Tuve este mismo argumento con Microsoft de nuevo en el día y tampoco sucedió entonces. Y así y así obtienes stackoverflow. 🙂 Es una lástima que se necesita un tipo (rock en Jake Wharton) trabajando por su cuenta para hacer un mejor trabajo con una barra de acción compatible con retroceso de Google puede llegar a su ridículo Acción Bar Patch thingy.

 @Override public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { SubMenu subMenu1 = menu.addSubMenu("Action Item"); subMenu1.add("Help"); subMenu1.add("About"); MenuItem subMenu1Item = subMenu1.getItem(); subMenu1Item.setIcon(R.drawable.ic_launcher); subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); SubMenu subMenu2 = menu.addSubMenu("All Options"); subMenu2.add("Help"); subMenu2.add("About"); MenuItem subMenu2Item = subMenu2.getItem(); subMenu2Item.setIcon(R.drawable.ic_launcher); return super.onCreateOptionsMenu(menu); } 
 @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){ Log.e(TAG, "onMenuOpened", e); } catch(Exception e){ throw new RuntimeException(e); } } } return super.onMenuOpened(featureId, menu); } 

Referencia: Cómo mostrar iconos en el menú Overflow en ActionBar

Tal vez usted tiene el mismo problema que yo. Tan para mí la solución era fácil si usted está utilizando AppCompat apenas no utiliza esta característica:

 android:showAsAction="always" 

En lugar de usarlo así:

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/option" android:title="@string/option" android:icon="@drawable/option" app:showAsAction="always"> </item> </menu> 

Hay diferencia en aditional xmlns: app y showAsAction es propiedad de app .

Espero que ayude a alguien.

Esto no es posible por diseño (al menos en HC – y estoy desarrollando en la API 16 y no conseguir ningún icono). Google no quiere que hagamos eso.

Para un poco de discusión sobre el tema, vea la respuesta relacionada aquí:

  • Visualización de iconos para los elementos de menú de la barra de acción de Honeycomb android 3.0

Como uno de los comentarios sugiere, si necesita los iconos, considere el uso de un menú desplegable, en lugar del menú de desbordamiento.

  • Android - Predibujar lienzo para onDraw
  • Construir Reproducir Interfaz similar a la música
  • ¿Qué podría hacer que una aplicación de Android se ejecute lentamente en un dispositivo idéntico a uno en el que corre rápido?
  • ¿Por qué llamar a setScaleX durante el gesto de pinch zoom causa parpadeo?
  • Mipmap Android, densidad de la imagen?
  • Actualizar interfaz de usuario mientras trabaja en el fondo
  • Android- ¿Cómo diferenciar los diseños de Galaxy S-3 y Galaxy S-4?
  • Android Night Mode sin CarModeEnabled
  • Cómo obtener DrawerLayout para deslizarse sobre la barra ActionBar
  • Conceptos básicos de Android: ejecutar código en el subproceso de la interfaz de usuario
  • En Android, ¿cómo posiciono una imagen encima de otra para que parezca una insignia?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.