菜单资源
菜单资源定义了可以使用MenuInflater充气的应用程序菜单(选项菜单,上下文菜单或子菜单)。
有关使用菜单的指南,请参阅菜单开发人员指南。
文件位置:
res/menu/filename.xml
文件名将用作资源ID。
编译资源数据类型:
指向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:numericShortcut="string"
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>
元素:
<menu>
必要。这必须是根节点。包含<item>和/或<group>元素。
属性:
xmlns:android
XML命名空间。必要。定义XML命名空间,该命名空间必须为“http://schemas.android.com/apk/res/android”。
<item>
菜单项。可能包含<menu>元素(用于子菜单)。必须是<menu>或<group>元素的子元素。
属性:
android:id
资源ID。唯一的资源ID。要为此项目创建新的资源ID,请使用以下格式:“@ + id / name”。加号表示应将其创建为新ID。
android:title
字符串资源。菜单标题为字符串资源或原始字符串。
android:titleCondensed
字符串资源。精简标题作为字符串资源或原始字符串。此标题用于正常标题太长的情况。
android:icon
可绘制的资源。要用作菜单项图标的图像。
android:onClick
方法名称。单击此菜单项时调用的方法。该方法必须在activity中声明为public,并接受MenuItem作为其唯一参数,该参数指示单击的项目。此方法优先于onOptionsItemSelected()的标准回调。请参见底部的示例。
警告:如果使用ProGuard(或类似工具)对代码进行模糊处理,请确保通过重命名排除在此属性中指定的方法,因为它可能会破坏功能。
在API Level 11中引入。
android:showAsAction
关键词。此项目何时以及如何在应用栏中显示为操作项。仅当活动包含应用栏时,菜单项才会显示为操作项。有效值:
Value | Description |
ifRoom | 如果有空间,只将此项目放在应用栏中。如果标记为“ifRoom”的所有项目都没有空间,则orderInCategory值最低的项目将显示为操作,其余项目将显示在溢出菜单中。 |
withText | 还包括带有操作项的标题文本(由android:title定义)。您可以将此值与其他一个值一起作为标志集包含在内,方法是将它们与管道分开。 |
never | 切勿将此项目放在应用栏中。而是在应用栏的溢出菜单中列出该项目。 |
always | 始终将此项目放在应用栏中。避免使用此项,除非项目始终出现在操作栏中至关重要。将多个项目设置为始终显示为操作项可能会导致它们与应用栏中的其他UI重叠。 |
collapseActionView | 与此操作项关联的操作视图(由android:actionLayout或android:actionViewClass声明)是可折叠的。 在API级别14中引入。 |
有关更多信息,请参阅添加App Bar培训课程。
在API Level 11中引入。
android:actionLayout
布局资源。用作动作视图的布局。
有关更多信息,请参阅操作视图和操作提供程序。
在API Level 11中引入。
android:actionViewClass
类名称。 View的完全限定类名,用作操作视图。例如,“android.widget.SearchView”将SearchView用作动作视图。
有关更多信息,请参阅操作视图和操作提供程序。
警告:如果使用ProGuard(或类似工具)对代码进行模糊处理,请确保通过重命名排除在此属性中指定的类,因为它可能会破坏功能。
android:actionProviderClass
类名称。 ActionProvider的完全限定类名,用于代替操作项。例如,“android.widget.ShareActionProvider”使用ShareActionProvider。
有关更多信息,请参阅操作视图和操作提供程序。
警告:如果使用ProGuard(或类似工具)对代码进行模糊处理,请确保通过重命名排除在此属性中指定的类,因为它可能会破坏功能。
在API级别14中引入。
android:alphabeticShortcut
字符。字母快捷键的字符。
android:numericShortcut
整数。数字快捷键的数字。
android:checkable
布尔。如果项目是可选中的,则为“true”。
android:checked
布尔。如果默认选中该项,则为“true”。
android:visible
布尔。如果项目默认可见,则为“true”。
android:enabled
布尔。如果默认启用该项,则为“true”。
android:menuCategory
关键词。与菜单CATEGORY_ *常量对应的值,用于定义项目的优先级。有效值:
Value | Description |
container | 对于属于容器的项目。 |
system | 对于系统提供的项目。 |
secondary | 对于用户提供的辅助(不经常使用)选项的项目。 |
alternative | 对于对当前显示的数据执行替代操作的项目。 |
android:orderInCategory
整数。组内的项目“重要性”的顺序。
<group>
菜单组(用于创建共享特征的项目集合,例如它们是可见的,启用的还是可检查的)。包含一个或多个<item>元素。必须是<menu>元素的子元素。
属性:
android:id
资源ID。唯一的资源ID。要为此项目创建新的资源ID,请使用以下格式:“@ + id / name”。加号表示应将其创建为新ID。
android:checkableBehavior
关键词。组的可检查行为的类型。有效值:
Value | Description |
none | 不可检查 |
all | 可以检查所有项目(使用复选框) |
single | 只能检查一个项目(使用单选按钮) |
android:visible
布尔。如果该组可见,则为“true”。
android:enabled
布尔。如果启用了组,则为“true”。
android:menuCategory
关键词。与菜单CATEGORY_ *常量对应的值,用于定义组的优先级。有效值:
Value | Description |
container | 对于属于容器的组。 |
system | 对于系统提供的组。 |
secondary | 对于用户提供的辅助(不经常使用)选项的组。 |
alternative | 对于对当前显示的数据执行替代操作的组。 |
android:orderInCategory
整数。类别中项目的默认顺序。
例子:
保存在res / menu / example_menu.xml的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"
android: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"
android:showAsAction="ifRoom|withText" >
<menu>
<item android:id="@+id/submenu_item1"
android:title="@string/submenu_item1" />
</menu>
</item>
</menu>
以下应用程序代码从onCreateOptionsMenu(Menu)回调中膨胀菜单,并声明其中两个项目的点击回调:
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 onOptionsItemSelected()
}