Resource menu menentukan menu aplikasi (Menu Opsi, Menu Konteks, atau submenu) yang dapat diperluas dengan MenuInflater
.
Untuk panduan penggunaan menu, lihat panduan developer tentang Menu.
- lokasi file:
res/menu/filename.xml
Nama file akan digunakan sebagai ID resource.
- jenis data resource terhimpun:
- 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
- Ruang nama XML. Wajib. Menentukan ruang nama XML, yang harus ditetapkan seperti berikut:
"http://schemas.android.com/apk/res/android"
.
<item>
- Item menu. Dapat 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 harus 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 dan menerima
MenuItem
sebagai satu-satunya parameter, yang menunjukkan item yang diklik. Metode ini lebih diutamakan daripada callback standar ke onOptionsItemSelected()
. Lihat contohnya di bawah.
Peringatan: Jika Anda menggunakan taktik obfuscation pada kode dengan ProGuard (atau fitur yang serupa), pastikan untuk mengecualikan metode yang ditetapkan dalam atribut ini agar namanya tidak diganti karena dapat merusak fungsionalitasnya.
Diperkenalkan pada API Level 11.
android:showAsAction
- Kata kunci. Kapan dan bagaimana item ini akan muncul sebagai item tindakan di panel aplikasi. Item menu hanya dapat muncul sebagai item tindakan jika aktivitas menyertakan panel aplikasi. Nilai valid:
Nilai | Deskripsi |
ifRoom | Hanya 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. |
withText | Sertakan 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 | . |
never | Jangan pernah tempatkan item ini di panel aplikasi. Cantumkan item dalam menu tambahan panel aplikasi. |
always | Selalu 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. |
collapseActionView | Tampilan tindakan yang terkait dengan item tindakan ini (seperti yang dideklarasikan oleh android:actionLayout atau android:actionViewClass ) dapat diciutkan. Diperkenalkan pada API Level 14. |
Lihat kelas pelatihan Menambahkan Panel Aplikasi untuk informasi selengkapnya.
Diperkenalkan pada API Level 11.
android:actionLayout
- Resource tata letak. Tata letak yang akan digunakan sebagai tampilan tindakan.
Lihat Tampilan Tindakan dan Penyedia Tindakan untuk informasi selengkapnya.
Diperkenalkan pada 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.
Lihat Tampilan Tindakan dan Penyedia Tindakan untuk informasi selengkapnya.
Peringatan: Jika Anda menggunakan taktik obfuscation pada kode menggunakan ProGuard (atau fitur yang serupa), pastikan untuk mengecualikan class yang ditetapkan dalam atribut ini agar namanya tidak diganti karena dapat merusak fungsionalitasnya.
Diperkenalkan pada 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
.
Lihat Tampilan Tindakan dan Penyedia Tindakan untuk informasi selengkapnya.
Peringatan: Jika Anda menggunakan taktik obfuscation pada kode menggunakan ProGuard (atau fitur yang serupa), pastikan untuk mengecualikan class yang ditetapkan dalam atribut ini agar namanya tidak diganti karena dapat merusak fungsionalitasnya.
Diperkenalkan pada 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:
Nilai | Deskripsi |
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 informasi selengkapnya tentang atribut alphabeticModifier
, buka alphabeticModifiers
.
android:numericModifiers
- Kata kunci. Pengubah untuk pintasan numerik item menu.
Nilai default-nya berhubungan dengan tombol Control. Nilai yang valid:
Nilai | Deskripsi |
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 informasi selengkapnya tentang atribut numericModifier
, buka 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
Menu
CATEGORY_*
, yang menentukan prioritas item. Nilai valid:
Nilai | Deskripsi |
container | Untuk item yang merupakan bagian dari penampung. |
system | Untuk item yang disediakan oleh sistem. |
secondary | Untuk item yang merupakan opsi kedua (jarang digunakan) dari pengguna. |
alternative | Untuk item yang merupakan tindakan alternatif pada data yang saat ini ditampilkan. |
android:orderInCategory
- Bilangan bulat. Urutan "nilai kepentingan" item, dalam sebuah 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 merupakan 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 harus dibuat sebagai ID baru.
android:checkableBehavior
- Kata kunci. Jenis perilaku resource yang dapat dicentang untuk grup tersebut. Nilai valid:
Nilai | Deskripsi |
none | Tidak dapat dicentang |
all | Semua item dapat dicentang (menggunakan kotak centang) |
single | Hanya satu item yang dapat dicentang (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
Menu
CATEGORY_*
, yang menentukan prioritas grup. Nilai valid:
Nilai | Deskripsi |
container | Untuk grup yang merupakan bagian dari suatu penampung. |
system | Untuk grup yang disediakan oleh sistem. |
secondary | Untuk grup yang merupakan opsi kedua (jarang digunakan) dari pengguna. |
alternative | Untuk 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 <code><a href="/reference/android/app/Activity.html#onOptionsItemSelected(android.view.MenuItem)">onOptionsItemSelected()</a></code>
}
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 <code><a href="/reference/android/app/Activity.html#onOptionsItemSelected(android.view.MenuItem)">onOptionsItemSelected()</a></code>
}