2012-01-18 2 views
16

Я следую за книгой по разработке Android, чтобы начать писать свое первое приложение. Я подошел к тому моменту, когда я делаю меню опций для одного из моих действий. Появится меню, но соответствующий значок пункта меню не отобразится. Вот код для меню:Значок меню настроек Android не отображается

ReminderListActivity

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater mi = getMenuInflater(); 
     mi.inflate(R.menu.list_menu, menu); 
     return true; 
    } 

Рез/меню/list_menu.xml

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

</menu> 

Я скопировал значок ic_menu_add.png (32x32px) из одной из подпапок Android SDK в папку res/drawable-mdpi и переименовал файл в menu_add.png. Я обновил папку в eclipse, чтобы появился значок, и, как вы видите, я установил его как значок для элемента меню в моем файле макета. Я несколько раз пытался запустить проект в эмуляторе, но значок никогда не появляется. Для записи я использую Android 4.0.3.

Любые идеи?

+0

Вы можете попробовать поставить иконку в папку плотности меньше? Я думаю, что это не имеет никакого отношения к вашему коду. Может быть, это сбой в Eclipse. – iTurki

+0

Что именно вы имеете в виду по папке без плотности? Есть только папки ldpi, mdpi и hdpi, нет? Я попытался поместить значок во все папки, но это не исправить. – Jort

+1

добавьте папку и назовите ее «drawable», а затем поместите на нее значок. Если это не сработало, попробуйте дублировать значок в каждой папке. Не забудьте обновить проект и очистить его перед тестированием. – iTurki

ответ

28

В Android 3.0+ предпочтительный подход для меню параметров (меню перелива в панели действий) не будет показывать значки. Если у вас есть android:targetSdkVersion="11" или выше, значки никогда не появятся в меню на Android 3.0+. Значки будут отображаться, если вы продвигаете элемент меню параметров, чтобы быть кнопкой на панели инструментов, и значки будут отображаться на устройствах Android 1.x/2.x.

+0

Спасибо за ответ, я подозревал, что это как-то связано с настройками Android. Могу ли я просто перевернуть элементы меню пунктов меню на панели инструментов или мне нужно превратить все меню опций в панель инструментов? – Jort

+0

@Jort: Прежде всего, вы должны перестать беспокоиться о значках. Вы можете использовать 'android: showAsAction' для перемещения пунктов меню опций в панель действий в виде кнопок на панели инструментов. – CommonsWare

+0

Спасибо за разъяснение. Книга я отслеживаю атм сосредоточена на написание приложений для Android 2.2, именно поэтому я так настойчивый в попытке получить мои значки, чтобы показать. Я еще не использовал панель действий, но теперь я понимаю, как изменился пользовательский интерфейс в новых версиях Android. Еще раз спасибо за полезный совет :) – Jort

0

Хорошо, что вы создали макет с RelativeLayout, и когда пользователь выбрал ваше меню, отображается ваш макет.

5

Это отлично работает для меня в API 23

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context=".MainActivity"> 
<item 
    android:icon="@drawable/ic_menu" 
    android:orderInCategory="100" 
    android:title="Option Menu" 
    app:showAsAction="always"> 
    <menu> 
     <item 
      android:id="@+id/action_myorder" 
      android:icon="@drawable/ic_order" 
      android:title="My Order" /> 
     <item 
      android:id="@+id/action_myaccount" 
      android:icon="@drawable/ic_account" 
      android:title="My Account" /> 
     <item 
      android:id="@+id/action_share" 
      android:icon="@drawable/ic_share" 
      android:title="Share" /> 
     <item 
      android:id="@+id/action_term_condition" 
      android:icon="@drawable/ic_terms" 
      android:title="Term and Conditions" /> 
     <item 
      android:id="@+id/action_logout" 
      android:icon="@drawable/ic_logout" 
      android:title="Logout" /> 
    </menu> 
</item> 

+0

отлично! просто хочу знать, что такое использование android: orderInCategory = "100" – Abhijit

+0

, если значение для категории равно 0, тогда меню переполнения появляется на фрагменте, а затем ниже этого фрагмента. –

Смежные вопросы