Android: cambia el ancho del menú de desbordamiento

Actualmente tengo un menú de desbordamiento que tiene ancho predeterminado:

Introduzca aquí la descripción de la imagen

Lo que quiero es:

Introduzca aquí la descripción de la imagen

He intentado cambiar el tema de esta manera:

<style name="MyWorkspaceDetailTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar"> <item name="android:popupMenuStyle">@style/MyPopupMenu</item> </style> <style name="MyPopupMenu" parent="@android:style/Widget.Holo.ListPopupWindow"> <item name="android:dropDownWidth">30dp</item> </style> 

Pero no tuvo ningún éxito. Por favor, alguien puede ayudar.

One Solution collect form web for “Android: cambia el ancho del menú de desbordamiento”

Estaba siguiendo este [ http://keepsafe.github.io/2014/11/19/building-a-custom-overflow-menu.html%5D tutorial, pero no mencionó la forma de cambiar el ancho

Así que también estaba buscando la misma respuesta y estado buscando durante todo, Todas las preguntas sobre Stackoverflow fue sin respuesta. Finalmente tuve que cavar el developer.google.com para encontrar una manera.

http://developer.android.com/reference/android/widget/ListPopupWindow.html

Usted encontrará un método setContentWidth (int width) que realmente hace nuestro trabajo.

Esta es la respuesta

  //.......... Something on top popupMenu.show(); // Try to force some horizontal offset try { Field fListPopup = menuHelper.getClass().getDeclaredField("mPopup"); fListPopup.setAccessible(true); Object listPopup = fListPopup.get(menuHelper); argTypes = new Class[] { int.class }; Class listPopupClass = listPopup.getClass(); // Get the width of the popup window int width = (Integer) listPopupClass.getDeclaredMethod("getWidth").invoke(listPopup); // Invoke setHorizontalOffset() with the negative width to move left by that distance listPopupClass.getDeclaredMethod("setHorizontalOffset", argTypes).invoke(listPopup, -width); /*********** THIS LINE DOSE OUR WORK and increases the width of OverFlow Menu ******/ listPopupClass.getDeclaredMethod("setContentWidth", argTypes).invoke(listPopup, width+200); // Invoke show() to update the window's position listPopupClass.getDeclaredMethod("show").invoke(listPopup); } catch (Exception e) { // Again, an exception here indicates a programming error rather than an exceptional condition // at runtime Log.w("Soemthing", "Unable to force offset", e); } 

Introduzca aquí la descripción de la imagen

A esto ==>

Introduzca aquí la descripción de la imagen

  • ¿Cómo puedo aplicar el tema android de HoloEverywhere cuando se usa ActionBarSherlock?
  • Cómo personalizar el estilo de botón Material de AppCompat?
  • Android: ¿Cómo cambiar el color de texto de ProgressDialog?
  • Estilo de AlertDialog - cómo cambiar el estilo (color) del título, del mensaje, del etc.
  • Tema XML de Android que hereda de dos temas principales?
  • Error: El atributo "theme" ya ha sido definido
  • ¿Cómo mantener el tema 4.1 y eliminar TitleBar en Android?
  • Color de fondo predeterminado de Theme.AppCompat.Light android
  • Cambio del borde de enfoque de EdiciónTexto
  • ¿Cómo se estila la barra de herramientas appcompat-v7 como Theme.AppCompat.Light.DarkActionBar?
  • Cómo cambiar el color predeterminado en todos los textos en mi aplicación de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.