Ресурс меню определяет меню приложения (меню параметров, контекстное меню или подменю), которое можно заполнить с помощью MenuInflater
.
Руководство по использованию меню см. в разделе «Добавление меню» .
- расположение файла:
-
res/menu/ filename .xml
Имя файла используется в качестве идентификатора ресурса. - тип данных скомпилированного ресурса:
- Указатель ресурса на ресурс
Menu
(или подкласса) - ссылка на ресурс:
- В Java:
R.menu. filename
В XML: @[ package :]menu. filename
- синтаксис:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@[+][package:]id/resource_name"
android:title="string"
android:titleCondensed="string"
android:icon="@[package:]drawable/drawable_resource_name"
android:onClick="method name"
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
android:actionLayout="@[package:]layout/layout_resource_name"
android:actionViewClass="class name"
android:actionProviderClass="class name"
android:alphabeticShortcut="string"
android:alphabeticModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
android:numericShortcut="string"
android:numericModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
android:checkable=["true" | "false"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" />
<group android:id="@[+][package:]id/resource name"
android:checkableBehavior=["none" | "all" | "single"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" >
<item />
</group>
<item >
<menu>
<item />
</menu>
</item>
</menu>
- элементы:
- Необходимый. Это должен быть корневой узел. Содержит элементы
<item>
и/или <group>
. Атрибуты:
-
xmlns:android
- Пространство имен XML . Необходимый. Определяет пространство имен XML, которое должно иметь вид
"http://schemas.android.com/apk/res/android"
.
-
<item>
- Пункт меню. Может содержать элемент
<menu>
(для подменю). Должен быть дочерним элементом элемента <menu>
или <group>
. Атрибуты:
-
android:id
- Идентификатор ресурса . Уникальный идентификатор ресурса. Чтобы создать новый идентификатор ресурса для этого элемента, используйте форму:
"@+id/ name "
. Символ плюса указывает, что он создан как новый идентификатор. -
android:title
- Строковый ресурс . Заголовок меню как строковый ресурс или необработанная строка.
-
android:titleCondensed
- Строковый ресурс . Сокращенный заголовок в виде строкового ресурса или необработанной строки. Этот заголовок используется в ситуациях, когда обычный заголовок слишком длинный.
-
android:icon
- Рисуемый ресурс . Изображение, которое будет использоваться в качестве значка пункта меню.
-
android:onClick
- Имя метода . Метод, вызываемый при нажатии на этот пункт меню. Метод должен быть объявлен в активности как общедоступный. Он принимает
MenuItem
в качестве единственного параметра, который указывает на выбранный элемент. Этот метод имеет приоритет над стандартным обратным вызовом onOptionsItemSelected()
. См. пример в конце этой страницы. Предупреждение. Если вы запутываете свой код с помощью ProGuard или аналогичного инструмента, обязательно исключите метод, указанный в этом атрибуте, из переименования, поскольку это может нарушить функциональность.
Представлено на уровне API 11.
-
android:showAsAction
- Ключевое слово . Когда и как этот элемент отображается в качестве элемента действия на панели приложения. Элемент меню может отображаться как элемент действия только в том случае, если действие включает панель приложения. Допустимые значения:
Ценить | Описание |
---|
ifRoom | Размещайте этот элемент на панели приложения только в том случае, если для него есть место. Если для всех элементов с пометкой "ifRoom" недостаточно места, элементы с наименьшими значениями orderInCategory отображаются как действия, а оставшиеся элементы отображаются в меню переполнения. |
withText | Также включите текст заголовка (определенный android:title ) в элемент действия. Вы можете включить это значение вместе с одним из других в качестве набора флагов, разделив их вертикальной чертой | . |
never | Никогда не размещайте этот элемент на панели приложений. Вместо этого укажите элемент в дополнительном меню панели приложения. |
always | Всегда размещайте этот элемент на панели приложения. Не используйте это, если только не важно, чтобы элемент всегда появлялся на панели действий. Настройка нескольких элементов, чтобы они всегда отображались как элементы действий, может привести к их перекрытию с другим пользовательским интерфейсом на панели приложения. |
collapseActionView | Представление действия, связанное с этим элементом действия (как объявлено в android:actionLayout или android:actionViewClass ), является сворачиваемым. Представлено на уровне API 14. |
Дополнительные сведения см. в разделе Добавление панели приложения .
Представлено на уровне API 11.
-
android:actionLayout
- Ресурс макета . Макет для использования в качестве представления действий.
Дополнительные сведения см. в разделе Использование представлений действий и поставщиков действий .
Представлено на уровне API 11.
-
android:actionViewClass
- Имя класса . Полное имя класса для
View
, которое будет использоваться в качестве представления действия. Например, "android.widget.SearchView"
чтобы использовать SearchView
в качестве представления действий. Дополнительные сведения см. в разделе Использование представлений действий и поставщиков действий .
Предупреждение. Если вы запутываете свой код с помощью ProGuard или аналогичного инструмента, обязательно исключите класс, указанный в этом атрибуте, из переименования, поскольку это может нарушить функциональность.
Представлено на уровне API 11.
-
android:actionProviderClass
- Имя класса . Полное имя класса, которое
ActionProvider
будет использовать вместо элемента действия. Например, "android.widget.ShareActionProvider"
для использования ShareActionProvider
. Дополнительные сведения см. в разделе Использование представлений действий и поставщиков действий .
Предупреждение. Если вы запутываете свой код с помощью ProGuard или аналогичного инструмента, обязательно исключите класс, указанный в этом атрибуте, из переименования, поскольку это может нарушить функциональность.
Представлено на уровне API 14.
-
android:alphabeticShortcut
- Чар . Символ для буквенного сочетания клавиш.
-
android:numericShortcut
- Целое число . Номер для цифровой клавиши быстрого доступа.
-
android:alphabeticModifiers
- Ключевое слово . Модификатор буквенного ярлыка пункта меню. Значение по умолчанию соответствует клавише Control . Допустимые значения:
Ценить | Описание |
---|
META | Соответствует мета-ключу Meta . |
CTRL | Соответствует метаключу Control . |
АЛТ | Соответствует мета-ключу Alt . |
СДВИГ | Соответствует метаклавише Shift . |
СИМ | Соответствует метаключу Sym . |
ФУНКЦИЯ | Соответствует метаключу Function . |
Примечание . В атрибуте можно указать несколько ключевых слов. Например, android:alphabeticModifiers="CTRL|SHIFT"
указывает, что для вызова соответствующего пункта меню пользователю необходимо нажать метаклавиши Control и Shift вместе с ярлыком.
Вы можете использовать метод setAlphabeticShortcut()
для установки значений атрибутов программным способом. Дополнительные сведения об атрибуте alphabeticModifier
см. в разделе alphabeticModifiers
.
-
android:numericModifiers
- Ключевое слово . Модификатор числового ярлыка пункта меню. Значение по умолчанию соответствует клавише Control . Допустимые значения:
Ценить | Описание |
---|
МЕТА | Соответствует мета-ключу Meta . |
CTRL | Соответствует метаключу Control . |
АЛТ | Соответствует мета-ключу Alt . |
СДВИГ | Соответствует метаклавише Shift . |
СИМ | Соответствует метаключу Sym . |
ФУНКЦИЯ | Соответствует метаключу Function . |
Примечание . В атрибуте можно указать несколько ключевых слов. Например, android:numericModifiers="CTRL|SHIFT"
указывает, что для вызова соответствующего пункта меню пользователю необходимо нажать метаклавиши Control и Shift вместе с ярлыком.
Вы можете использовать метод setNumericShortcut()
для установки значений атрибутов программным способом. Дополнительные сведения об атрибуте numericModifier
см. в разделе numericModifiers
.
-
android:checkable
- Логическое значение . Истинно, если элемент можно проверить.
-
android:checked
- Логическое значение . True, если элемент отмечен по умолчанию.
-
android:visible
- Логическое значение . True, если элемент виден по умолчанию.
-
android:enabled
- Логическое значение . True, если элемент включен по умолчанию.
-
android:menuCategory
- Ключевое слово . Значение, соответствующее константам
Menu
CATEGORY_*
, определяющим приоритет элемента. Допустимые значения: Ценить | Описание |
---|
container | Для предметов, которые являются частью контейнера. |
system | Для предметов, которые предоставляет система. |
secondary | Для элементов, которые являются дополнительными (нечасто используемыми) опциями, предоставляемыми пользователем. |
alternative | Для элементов, которые представляют собой альтернативные действия над данными, отображаемыми в данный момент. |
-
android:orderInCategory
- Целое число . Порядок важности элемента внутри группы.
-
<group>
- Группа меню для создания коллекции элементов, имеющих общие характеристики, например, являются ли они видимыми, включенными или выбираемыми. Содержит один или несколько элементов
<item>
. Должен быть дочерним элементом элемента <menu>
. Атрибуты:
-
android:id
- Идентификатор ресурса . Уникальный идентификатор ресурса. Чтобы создать новый идентификатор ресурса для этого элемента, используйте форму:
"@+id/ name "
. Символ плюса указывает, что он создан как новый идентификатор. -
android:checkableBehavior
- Ключевое слово . Тип выбираемого поведения для группы. Допустимые значения:
Ценить | Описание |
---|
none | Не выбирается. |
all | Все элементы можно выбрать (используйте флажки). |
single | Можно выбрать только один элемент (используйте переключатели). |
-
android:visible
- Логическое значение . True, если группа видна.
-
android:enabled
- Логическое значение . True, если группа включена.
-
android:menuCategory
- Ключевое слово . Значение, соответствующее константам
Menu
CATEGORY_*
, определяющим приоритет группы. Допустимые значения: Ценить | Описание |
---|
container | Для групп, являющихся частью контейнера. |
system | Для групп, которые предусмотрены системой. |
secondary | Для групп, которые являются дополнительными (нечасто используемыми) опциями, предоставляемыми пользователем. |
alternative | Для групп предусмотрены альтернативные действия над данными, отображаемыми в данный момент. |
-
android:orderInCategory
- Целое число . Порядок элементов по умолчанию в категории.
- пример:
- XML-файл, сохраненный в
res/menu/example_menu.xml
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/item1"
android:title="@string/item1"
android:icon="@drawable/group_item1_icon"
app:showAsAction="ifRoom|withText"/>
<group android:id="@+id/group">
<item android:id="@+id/group_item1"
android:onClick="onGroupItemClick"
android:title="@string/group_item1"
android:icon="@drawable/group_item1_icon" />
<item android:id="@+id/group_item2"
android:onClick="onGroupItemClick"
android:title="@string/group_item2"
android:icon="@drawable/group_item2_icon" />
</group>
<item android:id="@+id/submenu"
android:title="@string/submenu_title"
app:showAsAction="ifRoom|withText" >
<menu>
<item android:id="@+id/submenu_item1"
android:title="@string/submenu_item1" />
</menu>
</item>
</menu>
Следующий код приложения раздувает меню из обратного вызова onCreateOptionsMenu(Menu)
, а также объявляет обратный вызов по щелчку для двух элементов:
Котлин
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.example_menu, menu)
return true
}
fun onGroupItemClick(item: MenuItem) {
// One of the group items (using the onClick attribute) was clicked.
// The item parameter passed here indicates which item it is.
// All other menu item clicks are handled by Activity.onOptionsItemSelected.
}
Ява
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example_menu, menu);
return true;
}
public void onGroupItemClick(MenuItem item) {
// One of the group items (using the onClick attribute) was clicked.
// The item parameter passed here indicates which item it is.
// All other menu item clicks are handled by Activity.onOptionsItemSelected.
}