แหล่งข้อมูลของเมนู
    
    
      
    
    
      
      จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
    
    
      
      บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
    
  
  
      
    
  
  
  
  
  
    
    
    
  
  
    
    
    
ทรัพยากรของเมนูจะเป็นตัวกำหนดเมนูแอปพลิเคชัน ซึ่งได้แก่ เมนูตัวเลือก เมนูตามบริบท หรือเมนูย่อย
อาจสูงเกินจริงได้ด้วย 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"เครื่องหมายบวกบ่งชี้ว่าข้อความนี้สร้างขึ้นเป็น
ID
- android:title
- ทรัพยากรสตริง ชื่อเมนูเป็นแหล่งข้อมูลสตริงหรือสตริงดิบ
- android:titleCondensed
- ทรัพยากรสตริง ชื่อแบบย่อเป็นทรัพยากรสตริงหรือสตริงดิบ ช่วงเวลานี้
ชื่อ [title] ในกรณีที่ชื่อปกติยาวเกินไป
- android:icon
- แหล่งข้อมูลที่ถอนออกได้ รูปภาพที่จะใช้เป็นไอคอนรายการในเมนู
- android:onClick
- ชื่อเมธอด วิธีเรียกใช้เมื่อมีการคลิกรายการในเมนูนี้ 
ต้องประกาศไว้ในกิจกรรมเป็นสาธารณะ ยอมรับ MenuItemเป็น
พารามิเตอร์เท่านั้น ซึ่งระบุรายการที่ถูกคลิก เมธอดนี้จะมีความสำคัญเหนือมาตรฐาน
โทรกลับไปยังonOptionsItemSelected()โปรดดู
ตัวอย่างที่ตอนท้ายของหน้านี้คำเตือน: หากคุณปรับโค้ดให้ยากต่อการอ่าน (Obfuscate) โดยใช้ ProGuard หรือเครื่องมือที่คล้ายกัน
อย่าลืมยกเว้นเมธอดที่คุณระบุในแอตทริบิวต์นี้ไม่ให้เปลี่ยนชื่อ เนื่องจากอาจทำให้
 เปิดตัวใน API ระดับ 11 
- android:showAsAction
- คีย์เวิร์ด รายการนี้ปรากฏเป็นรายการการทำงานในแอปเมื่อใดและอย่างไร
            แถบ รายการเมนูจะปรากฏเป็นรายการการทำงานเฉพาะเมื่อกิจกรรมมี
            แถบแอป ค่าที่ถูกต้อง:
          
            | ค่า | คำอธิบาย | 
|---|
 | ifRoom | วางรายการนี้ใน
            แถบแอปหากมีที่ว่างพอ ถ้าไม่มีที่ว่างสำหรับทุกคน
            รายการที่ทำเครื่องหมาย "ifRoom"ซึ่งเป็นรายการที่มีราคาต่ำสุด
            ค่าorderInCategoryจะแสดงเป็นการดำเนินการ และ
            รายการที่เหลือจะแสดงอยู่ในเมนูรายการเพิ่มเติม |  | withText | และใส่ข้อความชื่อด้วย (ระบุ
ของ android:title) พร้อมกับรายการการทำงาน คุณสามารถรวมค่านี้
อื่นๆ เป็นธงที่กำหนดไว้โดยคั่นด้วยเส้นประ| |  | never | อย่าวางรายการนี้ในแถบแอป ให้แสดงรายการในรายการเพิ่มเติมของแถบแอปแทน
            เมนู |  | always | วางรายการนี้ในแถบแอปเสมอ
หลีกเลี่ยงการใช้กลุ่มเป้าหมายนี้ เว้นแต่ว่าจำเป็นต้องดำเนินการดังกล่าวเสมอ
แถบ การตั้งค่าหลายรายการให้แสดงเป็นรายการการทำงานเสมออาจส่งผลให้รายการนั้นทับซ้อนกัน
พร้อมกับ UI อื่นในแถบแอป |  | collapseActionView | เชื่อมโยงมุมมองการดำเนินการแล้ว
กับรายการการทำงานนี้ (ตามประกาศโดย android:actionLayoutหรือandroid:actionViewClass) คือ
ยุบได้เปิดตัวใน API ระดับ 14
 |  
 โปรดดูเพิ่มแถบแอป
          เพื่อดูข้อมูลเพิ่มเติม เปิดตัวใน API ระดับ 11 
- android:actionLayout
- แหล่งข้อมูลของเลย์เอาต์ เลย์เอาต์ที่จะใช้เป็นมุมมองการทำงาน
          สําหรับข้อมูลเพิ่มเติม โปรดดูใช้การดําเนินการ
            ข้อมูลพร็อพเพอร์ตี้และผู้ให้บริการการดำเนินการ เปิดตัวใน API ระดับ 11 
- android:actionViewClass
- ชื่อชั้นเรียน ชื่อคลาสที่มีคุณสมบัติครบถ้วนของ Viewเพื่อใช้เป็นมุมมองการทำงาน ตัวอย่างเช่น"android.widget.SearchView"เพื่อใช้SearchViewเป็นมุมมองการดำเนินการสําหรับข้อมูลเพิ่มเติม โปรดดูใช้การดําเนินการ
            ข้อมูลพร็อพเพอร์ตี้และผู้ให้บริการการดำเนินการ คำเตือน: หากคุณปรับโค้ดให้ยากต่อการอ่าน (Obfuscate) โดยใช้ ProGuard หรือเครื่องมือที่คล้ายกัน
อย่าลืมยกเว้นคลาสที่คุณระบุในแอตทริบิวต์นี้ไม่ให้เปลี่ยนชื่อ เนื่องจากอาจทำให้
 เปิดตัวใน API ระดับ 11 
- android:actionProviderClass
- ชื่อชั้นเรียน ชื่อคลาสที่มีคุณสมบัติครบถ้วนเพื่อให้ ActionProviderใช้แทนรายการการทำงาน ตัวอย่างเช่น"android.widget.ShareActionProvider"เพื่อใช้ShareActionProviderสําหรับข้อมูลเพิ่มเติม โปรดดูใช้การดําเนินการ
            ข้อมูลพร็อพเพอร์ตี้และผู้ให้บริการการดำเนินการ คำเตือน: หากคุณปรับโค้ดให้ยากต่อการอ่าน (Obfuscate) โดยใช้ ProGuard หรือเครื่องมือที่คล้ายกัน
อย่าลืมยกเว้นคลาสที่คุณระบุในแอตทริบิวต์นี้ไม่ให้เปลี่ยนชื่อ เนื่องจากอาจทำให้
 เปิดตัวใน API ระดับ 14 
- android:alphabeticShortcut
- แผนภูมิ อักขระสำหรับแป้นพิมพ์ลัดที่เป็นตัวอักษร
- android:numericShortcut
- จำนวนเต็ม ตัวเลขของแป้นพิมพ์ลัดตัวเลข
- android:alphabeticModifiers
- คีย์เวิร์ด แป้นกดร่วมสำหรับตัวอักษรของรายการเมนู
            ทางลัด ค่าเริ่มต้นจะสอดคล้องกับตัวควบคุมตัวควบคุม
             ค่าที่ถูกต้อง:
            
            | ค่า | คำอธิบาย | 
|---|
 
                | META | สอดคล้องกับเมตาคีย์ Meta |  
                | Ctrl | สอดคล้องกับเมตาคีย์ Control |  
                | สำรอง | สอดคล้องกับเมตาคีย์ Alt |  
                | เปลี่ยน | สอดคล้องกับเมตาคีย์ Shift |  
                | ระบบ | สอดคล้องกับเมตาคีย์ Sym |  
                | ฟังก์ชัน | สอดคล้องกับเมตาคีย์ Function |  
 หมายเหตุ: คุณสามารถระบุคีย์เวิร์ดได้หลายรายการใน
               ตัวอย่างเช่น
              android:alphabeticModifiers="CTRL|SHIFT"บ่งชี้
              ในการทริกเกอร์รายการในเมนูที่เกี่ยวข้อง ผู้ใช้ต้อง
              กดแป้นเมตาทั้ง Control และ Shift ตาม
              ด้วยทางลัด
 คุณสามารถใช้เมธอด setAlphabeticShortcut()เพื่อ
              กำหนดค่าแอตทริบิวต์แบบเป็นโปรแกรม หากต้องการดูข้อมูลเพิ่มเติม
              เกี่ยวกับแอตทริบิวต์alphabeticModifierโปรดดูalphabeticModifiers
 
- android:numericModifiers
- คีย์เวิร์ด แป้นกดร่วมสำหรับทางลัดตัวเลขของรายการในเมนู
            ค่าเริ่มต้นจะสอดคล้องกับแป้น Control ถูกต้อง
            มีดังนี้
            
            | ค่า | คำอธิบาย | 
|---|
 
                | META | สอดคล้องกับเมตาคีย์ Meta |  
                | Ctrl | สอดคล้องกับเมตาคีย์ Control |  
                | สำรอง | สอดคล้องกับเมตาคีย์ Alt |  
                | เปลี่ยน | สอดคล้องกับเมตาคีย์ Shift |  
                | ระบบ | สอดคล้องกับเมตาคีย์ Sym |  
                | ฟังก์ชัน | สอดคล้องกับเมตาคีย์ Function |  
 หมายเหตุ: คุณสามารถระบุคีย์เวิร์ดได้หลายรายการใน
               ตัวอย่างเช่น
              android:numericModifiers="CTRL|SHIFT"บ่งชี้
              ในการทริกเกอร์รายการในเมนูที่เกี่ยวข้อง ผู้ใช้ต้อง
              กดแป้นเมตาทั้ง Control และ Shift ตาม
              ด้วยทางลัด
 คุณสามารถใช้เมธอด setNumericShortcut()เพื่อตั้งค่า
              ค่าแอตทริบิวต์แบบเป็นโปรแกรมได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ
              แอตทริบิวต์numericModifierโปรดดูnumericModifiers
 
- android:checkable
- บูลีน เป็นจริงหากสามารถตรวจสอบรายการได้
- android:checked
- บูลีน เป็นจริงหากเลือกไว้โดยค่าเริ่มต้น
- android:visible
- บูลีน เป็นจริงหากรายการปรากฏโดยค่าเริ่มต้น
- android:enabled
- บูลีน เป็นจริงหากเปิดใช้รายการโดยค่าเริ่มต้น
- android:menuCategory
- คีย์เวิร์ด ค่าที่สอดคล้องกับ CATEGORY_*ของMenuคงที่ที่กำหนดลำดับความสำคัญของรายการ ค่าที่ถูกต้อง:
            | ค่า | คำอธิบาย | 
|---|
 | container | สำหรับรายการที่เป็นส่วนหนึ่งของ
คอนเทนเนอร์ |  | system | สำหรับสินค้าที่มาจาก
ระบบ |  | secondary | สำหรับรายการรองที่ผู้ใช้เป็นผู้ระบุ
(ไม่ค่อยได้ใช้) |  | alternative | สำหรับรายการที่เป็นการดำเนินการทางเลือก
ในข้อมูลที่แสดงอยู่ในขณะนั้น |  
 
- android:orderInCategory
- จำนวนเต็ม ลำดับความสำคัญของรายการภายในกลุ่ม
 
- <group>
- กลุ่มเมนู สำหรับสร้างคอลเล็กชันของรายการที่มีลักษณะเหมือนกัน เช่น
มองเห็นได้ เปิดใช้ หรือเลือกได้ มีองค์ประกอบ <item>อย่างน้อย 1 รายการ ต้องเป็น
ย่อยขององค์ประกอบ<menu>แอตทริบิวต์: 
        - android:id
- รหัสทรัพยากร รหัสทรัพยากรที่ไม่ซ้ำกัน วิธีสร้างรหัสทรัพยากรใหม่สำหรับรายการนี้
ใช้แบบฟอร์ม:
"@+id/name"เครื่องหมายบวกบ่งชี้ว่าข้อความนี้สร้างขึ้นเป็น
ID
- android:checkableBehavior
- คีย์เวิร์ด ประเภทของพฤติกรรมที่เลือกได้สำหรับกลุ่ม ค่าที่ถูกต้อง:
          
            | ค่า | คำอธิบาย | 
|---|
 | none | เลือกไม่ได้ |  | all | เลือกได้ทั้งหมด (ใช้ช่องทำเครื่องหมาย) |  | single | สามารถเลือกได้เพียงรายการเดียว (ใช้ปุ่มตัวเลือก
) |  
 
- android:visible
- บูลีน เป็นจริงหากมองเห็นกลุ่มได้
- android:enabled
- บูลีน เป็นจริงหากเปิดใช้กลุ่มแล้ว
- android:menuCategory
- คีย์เวิร์ด ค่าที่สอดคล้องกับ CATEGORY_*ของMenuค่าคงที่ที่กำหนดลำดับความสำคัญของกลุ่ม ค่าที่ถูกต้อง:
            | ค่า | คำอธิบาย | 
|---|
 | 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>รหัสแอปพลิเคชันต่อไปนี้ทำให้เมนูเพิ่มขึ้นจาก Callback onCreateOptionsMenu(Menu)และยังประกาศเมื่อคลิก
Callback สำหรับ 2 รายการดังนี้
 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 UTC
  
  
  
    
      [[["เข้าใจง่าย","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 UTC"],[],[]]