Resource menu

Resource menu menentukan menu aplikasi—menu opsi, menu konteks, atau submenu—yang dapat diperluas dengan MenuInflater.

Untuk panduan penggunaan menu, lihat Menambahkan menu.

lokasi file:
res/menu/filename.xml
Nama file digunakan sebagai ID resource
jenis data resource yang dihimpun:
Penunjuk resource ke resource Menu (atau subclass)
referensi resource:
Di Java: R.menu.filename
Dalam XML: @[package:]menu.filename
sintaksis:
<?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>
elemen:
Wajib. Elemen ini harus menjadi node root. Berisi elemen <item> dan/atau <group>.

Atribut:

xmlns:android
Namespace XML. Wajib. Menentukan ruang nama XML, yang harus ditetapkan seperti berikut "http://schemas.android.com/apk/res/android".
<item>
Item menu. Mungkin berisi elemen <menu> (untuk submenu). Harus merupakan turunan dari elemen <menu> atau <group>.

Atribut:

android:id
ID Resource. ID resource yang unik. Untuk membuat ID resource baru bagi item ini, gunakan bentuk: "@+id/name". Simbol plus menunjukkan bahwa ID ini dibuat sebagai ID baru.
android:title
Resource string. Judul menu sebagai resource string atau string mentah.
android:titleCondensed
Resource string. Judul yang disingkat sebagai resource string atau string mentah. Judul ini digunakan jika judul normal terlalu panjang.
android:icon
Resource drawable. Gambar yang akan digunakan sebagai ikon item menu.
android:onClick
Nama metode. Metode yang akan dipanggil saat item menu ini diklik. Metode ini harus dideklarasikan dalam aktivitas sebagai publik. Class ini menerima MenuItem sebagai satu-satunya parameter yang menunjukkan item yang diklik. Metode ini lebih diutamakan daripada callback standar ke onOptionsItemSelected(). Lihat contohnya di bagian akhir halaman ini.

Peringatan: Jika Anda meng-obfuscate kode menggunakan ProGuard atau alat serupa, pastikan untuk mengecualikan metode yang ditetapkan dalam atribut ini agar namanya tidak diganti karena dapat merusak fungsionalitasnya.

Diperkenalkan dalam API level 11.

android:showAsAction
Kata kunci. Waktu dan cara item ini muncul sebagai item tindakan di panel aplikasi. Item menu hanya dapat muncul sebagai item tindakan jika aktivitas menyertakan panel aplikasi. Nilai valid:
NilaiDeskripsi
ifRoomHanya tempatkan item ini di panel aplikasi jika ada ruang untuknya. Jika tidak ada ruang untuk semua item bertanda "ifRoom", item dengan nilai orderInCategory terendah akan ditampilkan sebagai tindakan, dan item lainnya akan ditampilkan dalam menu tambahan.
withTextSertakan juga teks judul (ditentukan oleh android:title) dengan item tindakan. Anda dapat menyertakan nilai ini dengan salah satu nilai lainnya sebagai set tanda dengan memisahkannya menggunakan pipa |.
neverJangan pernah menempatkan item ini di panel aplikasi. Sebagai gantinya, cantumkan item dalam menu tambahan panel aplikasi.
alwaysSelalu tempatkan item ini di panel aplikasi. Jangan menggunakannya kecuali item harus selalu muncul di panel tindakan. Menetapkan beberapa item agar selalu muncul sebagai item tindakan dapat mengakibatkan tumpang tindih antara item ini dengan UI lain di panel aplikasi.
collapseActionViewTampilan tindakan yang terkait dengan item tindakan ini (seperti yang dideklarasikan oleh android:actionLayout atau android:actionViewClass) dapat diciutkan.
Diperkenalkan pada API level 14.

Lihat Menambahkan panel aplikasi untuk mengetahui informasi selengkapnya.

Diperkenalkan dalam API level 11.

android:actionLayout
Resource tata letak. Tata letak yang akan digunakan sebagai tampilan tindakan.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan tampilan tindakan dan penyedia tindakan.

Diperkenalkan dalam API level 11.

android:actionViewClass
Nama class. Nama class yang sepenuhnya memenuhi syarat untuk View yang akan digunakan sebagai tampilan tindakan. Contohnya, "android.widget.SearchView" menggunakan SearchView sebagai tampilan tindakan.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan tampilan tindakan dan penyedia tindakan.

Peringatan: Jika Anda meng-obfuscate kode menggunakan ProGuard atau alat serupa, pastikan untuk mengecualikan class yang ditetapkan dalam atribut ini agar namanya tidak diganti karena dapat merusak fungsionalitasnya.

Diperkenalkan dalam API level 11.

android:actionProviderClass
Nama class. Nama class yang sepenuhnya memenuhi syarat untuk ActionProvider yang akan digunakan sebagai pengganti item tindakan. Contohnya, "android.widget.ShareActionProvider" akan menggunakan ShareActionProvider.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan tampilan tindakan dan penyedia tindakan.

Peringatan: Jika Anda meng-obfuscate kode menggunakan ProGuard atau alat serupa, pastikan untuk mengecualikan class yang ditetapkan dalam atribut ini agar namanya tidak diganti karena dapat merusak fungsionalitasnya.

Diperkenalkan dalam API level 14.

android:alphabeticShortcut
Karakter. Karakter untuk tombol pintasan alfabetis.
android:numericShortcut
Bilangan bulat. Angka untuk tombol pintasan numerik.
android:alphabeticModifiers
Kata kunci. Pengubah untuk pintasan alfabetis item menu. Nilai default-nya berhubungan dengan tombol Control . Nilai valid:
NilaiDeskripsi
META Berhubungan dengan tombol meta Meta.
CTRL Berhubungan dengan tombol meta Control.
ALT Berhubungan dengan tombol meta Alt.
SHIFT Berhubungan dengan tombol meta Shift.
SYM Berhubungan dengan tombol meta Sym.
FUNCTION Berhubungan dengan tombol meta Function.

Catatan: Anda dapat menentukan beberapa kata kunci dalam satu atribut. Contohnya, android:alphabeticModifiers="CTRL|SHIFT" menunjukkan bahwa untuk memicu item menu yang sesuai, pengguna harus menekan tombol meta Control dan Shift secara bersamaan dengan pintasannya.

Anda dapat menggunakan metode setAlphabeticShortcut() untuk menetapkan nilai atribut secara terprogram. Untuk mengetahui informasi selengkapnya tentang atribut alphabeticModifier, lihat alphabeticModifiers.

android:numericModifiers
Kata kunci. Pengubah untuk pintasan numerik item menu. Nilai default-nya berhubungan dengan tombol Control. Nilai yang valid:
NilaiDeskripsi
META Berhubungan dengan tombol meta Meta.
CTRL Berhubungan dengan tombol meta Control.
ALT Berhubungan dengan tombol meta Alt.
SHIFT Berhubungan dengan tombol meta Shift.
SYM Berhubungan dengan tombol meta Sym.
FUNCTION Berhubungan dengan tombol meta Function.

Catatan: Anda dapat menentukan beberapa kata kunci dalam satu atribut. Contohnya, android:numericModifiers="CTRL|SHIFT" menunjukkan bahwa untuk memicu item menu yang sesuai, pengguna harus menekan tombol meta Control dan Shift secara bersamaan dengan pintasannya.

Anda dapat menggunakan metode setNumericShortcut() untuk menetapkan nilai atribut secara terprogram. Untuk mengetahui informasi selengkapnya tentang atribut numericModifier, lihat numericModifiers.

android:checkable
Boolean. True jika item dapat dicentang.
android:checked
Boolean. True jika item dicentang secara default.
android:visible
Boolean. True jika item dapat dilihat secara default.
android:enabled
Boolean. True jika item diaktifkan secara default.
android:menuCategory
Kata kunci. Nilai yang berhubungan dengan konstanta CATEGORY_* Menu yang menentukan prioritas item. Nilai valid:
NilaiDeskripsi
containerUntuk item yang merupakan bagian dari penampung.
systemUntuk item yang disediakan oleh sistem.
secondaryUntuk item yang merupakan opsi kedua (jarang digunakan) dari pengguna.
alternativeUntuk item yang merupakan tindakan alternatif pada data yang saat ini ditampilkan.
android:orderInCategory
Bilangan bulat. Urutan tingkat kepentingan item dalam grup.
<group>
Grup menu untuk membuat kumpulan item yang memiliki kesamaan karakter, seperti apakah item terlihat, diaktifkan, atau dapat dicentang. Berisi satu atau beberapa elemen <item>. Harus berupa turunan dari elemen <menu>.

Atribut:

android:id
ID Resource. ID resource yang unik. Untuk membuat ID resource baru bagi item ini, gunakan bentuk: "@+id/name". Simbol plus menunjukkan bahwa ID ini dibuat sebagai ID baru.
android:checkableBehavior
Kata kunci. Jenis perilaku resource yang dapat dipilih untuk grup tersebut. Nilai valid:
NilaiDeskripsi
noneTidak dapat dipilih.
allSemua item dapat dipilih (menggunakan kotak centang)
singleHanya satu item yang dapat dipilih (menggunakan tombol radio)
android:visible
Boolean. True jika grup dapat dilihat.
android:enabled
Boolean. True jika grup diaktifkan.
android:menuCategory
Kata kunci. Nilai yang berhubungan dengan konstanta CATEGORY_* Menu yang menentukan prioritas grup. Nilai valid:
NilaiDeskripsi
containerUntuk grup yang merupakan bagian dari suatu penampung.
systemUntuk grup yang disediakan oleh sistem.
secondaryUntuk grup yang merupakan opsi kedua (jarang digunakan) dari pengguna.
alternativeUntuk grup yang merupakan tindakan alternatif pada data yang saat ini ditampilkan.
android:orderInCategory
Bilangan bulat. Urutan default item dalam kategori.
contoh:
File XML yang disimpan di 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>

Kode aplikasi berikut akan memperluas menu dari callback onCreateOptionsMenu(Menu) serta mendeklarasikan callback saat diklik untuk dua item:

Kotlin

override 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.
}

Java

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 Activity.onOptionsItemSelected.
}