Главная » Разработка для Android » Описание меню с помощью XML

0

Android  позволяет  описывать  иерархические меню в виде ресурсов в формате XML.

Как и в случае с разметкой и другими ресурсами, это дает возможность создавать разные меню для разных аппаратных конфигураций, языковых настроек или регионов. К примеру, вы хотите переместить некоторые экран- ные настройки в меню, но только для устройств с маленьким  дисплеем.

Меню описываются в формате XML и хранятся в каталоге res/menu вну- три вашей директории с ресурсами. Все иерархии должны создаваться в виде отдельных  файлов,  имена которых (в нижнем регистре)  становятся иден- тификаторами ресурсов.

Создайте иерархическое меню, используя тег <menu> в качестве главно- го узла, а также набор тегов <item> для описания каждого пункта. Все узлы item поддерживают атрибуты, с помощью которых можно задать свойства для объектов MenuItem, включая текст, значок, сокращенную клавиатурную команду и настройки для переключателя.

Чтобы  создать  дочернее  меню, добавьте  новый  тег <menu> внутрь узла <item>.

В листинге 4.30 показано, как с помощью XML-ресурсов создать иерар- хическое меню, описанное в листинге 4.29.

Листинг 4.30. Описание  меню в формате XML

<menu xmlns:android="http://schemas.android.com/apk/res/android" android:name="Context Menu">

<item android:id="@+id/item01" android:icon="@drawable/menu_item" android:title="Item 1">

</item>

<item android:id="@+id/item02" android:checkable="true" android:title="Item 2">

</item>

<item android:id="@+id/item03" android:numericShortcut="3" android:alphabeticShortcut="3" android:title="Item 3">

</item>

<item android:id="@+id/item04" android:title="Submenu">

<menu>

<item android:id="@+id/item05" android:title="Submenu Item">

</item>

</menu>

</item>

</menu>

Воспользоваться данным ресурсом можно с помощью класса MenuInfla- tor, применяя его внутри обработчиков  onCreateOptionsMenu или onCre- ateContextMenu, как показано в листинге 4.31.

Листинг 4.31. Получение  меню из XML-ресурса

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.my_menu, menu);

menu.setHeaderTitle("Context Menu");

}

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии