菜单资源
    
    
      
    
    
      
      使用集合让一切井井有条
    
    
      
      根据您的偏好保存内容并对其进行分类。
    
  
  
      
    
  
  
  
  
  
    
  
  
    
    
    
菜单资源用于定义可通过 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: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。唯一资源 ID。如要为此项创建新的资源 ID,请使用以下形式:"@+id/name"。加号表示其是作为新 ID 创建的。
- android:title
- 字符串资源。字符串资源或原始字符串形式的菜单标题。
- android:titleCondensed
- 字符串资源。字符串资源或原始字符串形式的压缩标题。此标题在正常标题过长的情况下使用。
- android:icon
- 可绘制资源。用作菜单项图标的图片。
- android:onClick
- 方法名称。点击此菜单项时调用的方法。此方法必须在 activity 中声明为公共方法。其接受 MenuItem作为其唯一参数,该参数指示所点击的项此方法优先于对onOptionsItemSelected()的标准回调。请参见本页末尾处的示例。警告:如果您使用 ProGuard 或类似工具混淆代码,切记不要重命名在此属性中指定的方法,因为这样会破坏功能。 此项为 API 级别 11 中的新增配置。 
- android:showAsAction
- 关键字。此菜单项在应用栏中作为操作项显示的时间和方式。菜单项只有在 activity 包含应用栏时才能显示为操作项。有效值:
          
            | 值 | 说明 | 
|---|
 | 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 | 对应于 Alt 元键。 |  
                | SHIFT | 对应于 Shift 元键。 |  
                | SYM | 对应于 Sym 元键。 |  
                | FUNCTION | 对应于 Function 元键。 |  
 注意:您可以在一个属性中指定多个关键字。例如,android:alphabeticModifiers="CTRL|SHIFT"表示要触发相应的菜单项,用户需要同时按下 Control 和 Shift 元键以及快捷键。
 您可以使用 setAlphabeticShortcut()方法以编程方式设置属性值。如需关于alphabeticModifier属性的更多信息,请参阅alphabeticModifiers。
 
- android:numericModifiers
- 关键字。菜单项的数字快捷键的辅助键。
            默认值对应于 Control 键。有效值:
            
            | 值 | 说明 | 
|---|
 
                | META | 对应于 Meta 元键。 |  
                | CTRL | 对应于 Control 元键。 |  
                | ALT | 对应于 Alt 元键。 |  
                | SHIFT | 对应于 Shift 元键。 |  
                | SYM | 对应于 Sym 元键。 |  
                | FUNCTION | 对应于 Function 元键。 |  
 注意:您可以在一个属性中指定多个关键字。例如,android:numericModifiers="CTRL|SHIFT"表示要触发相应的菜单项,用户需要同时按下 Control 和 Shift 元键以及快捷键。
 您可以使用 setNumericShortcut()方法以编程方式设置属性值。如需关于numericModifier属性的更多信息,请参阅numericModifiers。
 
- android:checkable
- 布尔值。如果该项可勾选,则为“true”。
- android:checked
- 布尔值。如果默认情况下该项为勾选状态,则为“true”。
- android:visible
- 布尔值。如果默认情况下该项可见,则为“true”。
- android:enabled
- 布尔值。如果默认情况下该项为启用状态,则为“true”。
- android:menuCategory
- 关键字。对应于 MenuCATEGORY_*常量的值,这些常量用于定义项的优先级。有效值:
            | 值 | 说明 | 
|---|
 | container | 这类项归属于容器。 |  | system | 这类项由系统提供。 |  | secondary | 这类项是用户提供的次要(不常用)选项。 |  | alternative | 这类项是对当前显示的数据的替代操作。 |  
 
- android:orderInCategory
- 整数。项在组内的重要性顺序。
 
- <group>
- 一个菜单组,用于创建一组具有相同特征(例如是否可见、是否启用或是否可勾选)的项。包含一个或多个 <item>元素。必须为<menu>元素的子项。属性: 
        - android:id
- 资源 ID。唯一资源 ID。如要为此项创建新的资源 ID,请使用以下形式:"@+id/name"。加号表示其是作为新 ID 创建的。
- android:checkableBehavior
- 关键字。组的可勾选行为类型。有效值:
          
            | 值 | 说明 | 
|---|
 | none | 无法选择。 |  | all | 可以勾选所有项(使用复选框)。 |  | single | 只能勾选一项(使用单选按钮)。 |  
 
- android:visible
- 布尔值。如果组可见,则为“true”。
- android:enabled
- 布尔值。如果组为启用状态,则为“true”。
- android:menuCategory
- 关键字。对应于 MenuCATEGORY_*常量的值,这些常量用于定义组的优先级。有效值:
            | 值 | 说明 | 
|---|
 | container | 这类组归属于容器。 |  | system | 这类组由系统提供。 |  | secondary | 这类组是用户提供的次要(不常用)选项。 |  | alternative | 这类组是对当前显示的数据的替代操作。 |  
 
- android:orderInCategory
- 整数。项在类别中的默认顺序。
 
 
- 示例:
- 保存在 res/menu/example_menu.xml的 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)回调扩充菜单,还会声明其中两个项的点击回调:
 Kotlinoverride 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.
}Javapublic 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.
}
 
    
  
  
    
    
      
       
    
    
  
  
  本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
  最后更新时间 (UTC):2025-07-29。
  
  
  
    
      [null,null,["最后更新时间 (UTC):2025-07-29。"],[],[]]