選單資源
    
    
      
    
    
      
      透過集合功能整理內容
    
    
      
      你可以依據偏好儲存及分類內容。
    
  
  
      
    
  
  
  
  
  
    
    
    
  
  
    
    
    
選單資源會定義可使用 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
- 「方法名稱」。點選此選單項目時呼叫的方法。該方法必須在活動中宣告為公開。它可接受 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 | 對應至 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
- 「布林值」。如果該項目可勾選,則為「是」。
- android:checked
- 「布林值」。如果該項目預設為勾選,則為「是」。
- android:visible
- 「布林值」。如果該項目預設為顯示,則為「是」。
- android:enabled
- 「布林值」。如果該項目預設為啟用,則為「是」。
- 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
- 「布林值」。如果群組可顯示,則為「是」。
- android:enabled
- 「布林值」。如果群組已啟用,則為「是」。
- android:menuCategory
- 「關鍵字」。與 MenuCATEGORY_*常數相對應的值,該常數定義群組的優先順序。有效值:
            | 值 | 說明 | 
|---|
 | 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)回呼加載選單,並宣告兩個項目的點按回呼:
 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 和/或其關係企業的商標或註冊商標。
  上次更新時間:2025-07-29 (世界標準時間)。
  
  
  
    
      [[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-07-29 (世界標準時間)。"],[],[]]