Android: изменение ширины меню переполнения

В настоящее время у меня есть меню переполнения, которое имеет ширину по умолчанию:

Введите описание изображения здесь

Я хочу:

Введите описание изображения здесь

Я попытался изменить тему следующим образом:

<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> 

Но не получил никакого успеха. Пожалуйста, помогите.

Я изучил этот учебник [ http://keepsafe.github.io/2014/11/19/building-a-custom-overflow-menu.html%5D, но не упомянул способ изменить ширину

Так что я тоже смотрел такой же ответ и искал, пока все вопросы по Stackoverflow остались без ответа. Наконец, мне пришлось вырыть сайт developers.google.com, чтобы узнать путь.

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

Вы найдете метод setContentWidth (int width), который фактически выполняет нашу работу.

Вот ответ

  //.......... 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); } 

Введите описание изображения здесь

К этому ==>

Введите описание изображения здесь

Intereting Posts
Measure () не работает должным образом с динамическими макетами и textView – Android Недопустимая ошибка имени файла в Eclipse Android NDK: ПРЕДУПРЕЖДЕНИЕ: APP_PLATFORM андроид-9 больше, чем андроид: minSdkVersion 8 Могу ли я разрабатывать приложения для Android на Perl? IBeacons – Компания (Estimote, Gimbal и т. Д.) SDKs против библиотеки Android / iOS Android: Как начать работу в фоновом режиме Принудительный GSON использовать конструктор, содержащий сеттеры или сеттеры, в общем, вместо полей Отправить E-mail в формате HTML Неправильная навигация при сохранении контактов на Android Как выполнить уведомление-действие (щелчок) на заблокированном экране? Picasso Загрузка изображения для Android – модель потоковой передачи Синхронизация файлов и базы данных Android с помощью Dropbox Показывать ход окна, но не ActionBar Progress (с использованием библиотеки совместимости v7) Как получить углы Эйлера из вектора вращения (Sensor.TYPE_ROTATION_VECTOR) Как реализовать единый режим приложения (COSU) в Android?