Отображение значка для пунктов меню панели действий в Honeycomb android 3.0

Здравствуй
Я разрабатываю приложение для Android, используя Honeycomb android 3.0. Я пытаюсь отобразить меню в панели действий. В меню есть значок и tiltle. Когда мы нажимаем элемент меню, он отображает его элементы в виде раскрывающегося списка. Это были элементы в выпадающем списке с именами элементов, но с отображаемым значком. Я хочу, чтобы значок отображался рядом с заголовком в выпадающем списке, который появляется, когда я нажимаю меню. Может кто-нибудь помочь мне в решении этой проблемы. Мой xml-файл выглядит следующим образом:

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

Сначала он отображает добавочный сервер со значком слева. Нажав на это, будет отображаться файловый сервер, sharepoint, как выпадающий список с иконкой, но я получил android: icon statement.
Может ли кто-нибудь помочь мне в решении этой проблемы?
Заранее спасибо,

Поведение, в котором значки не отображаются в меню переполнения панели действий, является конструктивным (начиная с этой записи). Если вам абсолютно необходимо использовать значки, вам нужно написать специальную реализацию, чтобы пересмотреть ваш дизайн, чтобы он соответствовал соглашениям пользовательского интерфейса.

Фактически, есть способ разместить значки рядом с текстами для пунктов меню:

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

Это приведет к появлению значка в начале пункта меню прямо перед его исходным текстом.

Кстати, это также будет работать на PopupMenu.

Хотя исходный вопрос немного устарел и более того, потому что аргументация против показа иконки в меню несколько не хватает вещества (см. Превосходное замечание Стивена Эллиотта. Отображение значка для пунктов меню панели действий в Honeycomb android 3.0 ), я хотел бы указать на Отличное рабочее решение, которое было дано здесь :

 @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); } 

Просто добавьте этот код в свою деятельность и импортируйте соответствующие модули. Опять же, не моя работа, но работающая, тем не менее.

Intereting Posts