Menu资源
Menu资源定义了应用程序的菜单(选项菜单,上下文菜单或子菜单),可以通过MenuInflater创建。
File Location:
res/menu/filename.xml
文件名将作为资源ID使用。
Compiled Resource Datatype:
指向Menu(或子类)资源的指针。
Resouce Reference:
R.menu.filename(Java)
@[package:]menu.filename(XML)
Syntax:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/id_name"
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer"
android:title="string"
android:titleCondensed="string"
android:icon="@[package:]drawable/drawable_resource_name"
android:alphabeticShortcut="string"
android:numericShortcut="string"
android:checkable=["true" | "false"]
android:visible=["visible" | "invisible" | "gone"]
android:enabled=["enabled" | "disabled"] />
<group android:id="resource ID"
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer"
android:checkableBehavior=["none" | "all" | "single"]
android:visible=["visible" | "invisible" | "gone"]
android:enabled=["enabled" | "disabled"] >
<item />
</group>
<item >
<menu>
<item />
</menu>
</item>
</menu>
Elements:
<menu>
必须。必须是根节点。包含<item>或<group>元素。
Attributes:
xmlns:android
String。必须。定义XML命名空间,http://schemas.android.com/apk/res/android。
<group>
菜单组,item集合,用于共享特征,如visible,enabled或checkable。包含一个或多个<item>元素。必须是<menu>的子元素。
Attributes:
android:id
资源名。唯一的资源名。使用此格式:“@+id/name”。
android:menuCategory
Keyword。Menu_CATEGORY_*常量,定义组的优先级。有效的值包括:
Value |
Description |
container |
For groups that are part of a container. |
system |
For groups that are provided by the system. |
secondary |
For groups that are user-supplied secondary (infrequently used) options. |
alternative |
For groups that are alternative actions on the data that is currently displayed. |
android:orderInCategory
Integer。item的默认顺序。
android:checkableBehavior
Keyword。group的checkable行为类型。有效的值包括:
Value |
Description |
none |
Not checkable |
all |
All items can be checked (use checkboxes) |
single |
Only one item can be checked (use radio buttons) |
android:visible
Boolean。“true”表示group可见。
android:enabled
Boolean。“true”表示group可用。
<item>
Menu item。可能包含一个<menu>元素(子菜单)。必须是<menu>或<group>元素的子元素。
Attributes:
android:id
资源名。唯一的资源名。使用此格式:“@+id/name”。
android:menuCategory
Keyword。Menu_CATEGORY_*常量,定义item的优先级。有效的值包括:
Value |
Description |
container |
For items that are part of a container. |
system |
For items that are provided by the system. |
secondary |
For items that are user-supplied secondary (infrequently used) options. |
alternative |
For items that are alternative actions on the data that is currently displayed. |
android:orderInCategory
Integer。group中item的重要度顺序。
android:title
String。menu的标题。
android:titleCondensed
String。简要标题,应用于普通标题过于长的情况。
android:icon
Drawable资源。作为菜单项的icon显示。
android:alphabeticShortcut
Char。字母快捷键。
android:numericShortcut
Integer。数字快捷键。
android:checkable
Boolean。“true”表示item可选。
android:checked
Boolean。“true”表示item默认选中。
android:visible
Boolean。“true”表示item默认可见。
android:enabled
Boolean。“true”表示item默认可用。
Example:
XML保存在res/menu/example_menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1"
android:title="@string/item1"
android:icon="@drawable/group_item1_icon" />
<group android:id="@+id/group">
<item android:id="@+id/group_item1"
android:title="@string/group_item1"
android:icon="@drawable/group_item1_icon" />
<item android:id="@+id/group_item2"
android:title="G@string/group_item2"
android:icon="@drawable/group_item2_icon" />
</group>
<item android:id="@+id/submenu"
android:title="@string/submenu_title" >
<menu>
<item android:id="@+id/submenu_item1"
android:title="@string/submenu_item1" />
</menu>
</item>
</menu>
在onCreateOptionsMenu(Menu)回调中激活这个menu:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example_menu, menu);
return true;
}