Una risorsa di menu definisce un menu dell'applicazione (un menu di opzioni, un menu contestuale o un sottomenu) che
può essere gonfiato con MenuInflater
.
Per una guida all'utilizzo dei menu, consulta la sezione Aggiungere menu.
- percorso del file:
res/menu/filename.xml
-
Il nome file viene utilizzato come ID risorsa
- tipo di dati della risorsa compilato:
- Puntatore di risorsa a una risorsa
Menu
(o sottoclasse)
- riferimento della risorsa:
-
In Java:
R.menu.filename
In XML: @[package:]menu.filename
- sintassi:
-
<?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>
- elementi:
-
- Obbligatorio. Deve essere il nodo radice. Contiene
<item>
e/o
Elementi <group>
.
Attributi:
xmlns:android
- Spazio dei nomi XML. Obbligatorio. Definisce lo spazio dei nomi XML,
deve essere
"http://schemas.android.com/apk/res/android"
.
<item>
- Una voce di menu. Potrebbe contenere un elemento
<menu>
(per un sottomenu).
Deve essere un elemento secondario di un elemento <menu>
o <group>
.
Attributi:
android:id
- ID risorsa. Un ID risorsa univoco. Per creare un nuovo ID risorsa per questo elemento, utilizza il modulo:
"@+id/name"
. Il simbolo più indica che viene creato come nuovo
ID.
android:title
- Risorsa stringa. Il titolo del menu come risorsa stringa o stringa non elaborata.
android:titleCondensed
- Risorsa stringa. Un titolo ridotto come risorsa stringa o una stringa non elaborata. Questo
titolo viene utilizzato quando il titolo normale è troppo lungo.
android:icon
- Risorsa disegnabile. Un'immagine da utilizzare come icona della voce di menu.
android:onClick
- Nome metodo. Il metodo da chiamare quando l'utente fa clic su questa voce di menu. La
deve essere dichiarato come pubblico nell'attività. Accetta un
MenuItem
come
, che indica l'articolo selezionato. Questo metodo ha la precedenza sul metodo standard
callback a onOptionsItemSelected()
. Consulta le
esempio alla fine di questa pagina.
Avviso:se offuschi il codice utilizzando ProGuard o uno strumento simile,
assicurati di escludere il metodo specificato in questo attributo dalla ridenominazione, poiché potrebbe interrompere
funzionalità.
Introdotto nel livello API 11.
android:showAsAction
- Parola chiave. Quando e come questo elemento viene visualizzato come attività nell'app
. Una voce di menu può essere visualizzata come attività solo se l'attività include una
barra delle app. Valori validi:
Valore | Descrizione |
ifRoom | Posiziona questo elemento solo nella
barra delle app, se c'è spazio. Se non c'è spazio per tutti
gli elementi contrassegnati con "ifRoom" , quelli con il
I valori di orderInCategory vengono visualizzati come azioni e
gli altri elementi vengono visualizzati nel menu extra. |
withText | Includi anche il testo del titolo (definito
di android:title ) con l'attività. Puoi includere questo valore insieme a uno
degli altri come flag impostato separandoli con una barra verticale | . |
never | Non inserire mai questo elemento nella barra delle app. Indica invece l'elemento nell'overflow della barra delle app
o dal menu Fogli Google. |
always | Posiziona sempre questo elemento nella barra delle app.
Evita di usarlo, a meno che non sia fondamentale che l'elemento compaia sempre nell'azione
. L'impostazione di più elementi in modo che vengano sempre visualizzati come attività può comportare la loro sovrapposizione.
con un'altra UI nella barra delle app. |
collapseActionView | La visualizzazione azioni associata
con questa attività (come dichiarata da android:actionLayout o
android:actionViewClass ) è
comprimibile. Introdotto nel livello API 14. |
Consulta la sezione Aggiungere la barra delle app.
per ulteriori informazioni.
Introdotto nel livello API 11.
android:actionLayout
- Risorsa di layout. Un layout da utilizzare come visualizzazione dell'azione.
Per ulteriori informazioni, consulta la sezione Utilizzare l'azione
di viste e azioni.
Introdotto nel livello API 11.
android:actionViewClass
- Nome del corso. Un nome completo del corso per
View
da usare come visualizzazione delle azioni. Ad esempio:
"android.widget.SearchView"
per usare SearchView
come visualizzazione azione.
Per ulteriori informazioni, consulta la sezione Utilizzare l'azione
di viste e azioni.
Avviso:se offuschi il codice utilizzando ProGuard o uno strumento simile,
assicurati di escludere la classe specificata in questo attributo dalla ridenominazione, poiché potrebbe interrompere
funzionalità.
Introdotto nel livello API 11.
android:actionProviderClass
- Nome del corso. Un nome completo della classe che
ActionProvider
può utilizzare al posto dell'attività. Ad esempio:
"android.widget.ShareActionProvider"
per utilizzare ShareActionProvider
.
Per ulteriori informazioni, consulta la sezione Utilizzare l'azione
di viste e azioni.
Avviso:se offuschi il codice utilizzando ProGuard o uno strumento simile,
assicurati di escludere la classe specificata in questo attributo dalla ridenominazione, poiché potrebbe interrompere
funzionalità.
Introdotto nel livello API 14.
android:alphabeticShortcut
- carattere. Un carattere per la scorciatoia da tastiera alfabetica.
android:numericShortcut
- Numero intero. Un numero per la scorciatoia da tastiera numerica.
android:alphabeticModifiers
- Parola chiave. Un modificatore per l'alfabeto della voce del menu
scorciatoia. Il valore predefinito corrisponde al campo Controllo
chiave. Valori validi:
Valore | Descrizione |
META |
Corrisponde alla meta chiave Meta. |
CTRL |
Corrisponde alla metachiave Controllo. |
ALT |
Corrisponde alla meta-chiave Alt. |
MAIUSC |
Corrisponde al meta-tasto Maiusc. |
SISTEMA |
Corrisponde alla meta chiave Sym. |
FUNZIONE |
Corrisponde al meta tasto Funzione. |
Nota: puoi specificare più parole chiave in una
. Ad esempio:
android:alphabeticModifiers="CTRL|SHIFT"
indica
per attivare la voce di menu corrispondente, l'utente deve
premi entrambi i tasti meta Ctrl e Maiusc insieme
con la scorciatoia.
Puoi usare il metodo setAlphabeticShortcut()
per
e impostare i valori degli attributi
in modo programmatico. Per ulteriori informazioni
sull'attributo alphabeticModifier
, consulta
alphabeticModifiers
.
android:numericModifiers
- Parola chiave. Un modificatore per la scorciatoia numerica della voce di menu.
Il valore predefinito corrisponde al tasto Ctrl. Valido
valori:
Valore | Descrizione |
META |
Corrisponde alla meta chiave Meta. |
CTRL |
Corrisponde alla metachiave Controllo. |
ALT |
Corrisponde alla meta-chiave Alt. |
MAIUSC |
Corrisponde al meta-tasto Maiusc. |
SISTEMA |
Corrisponde alla meta chiave Sym. |
FUNZIONE |
Corrisponde al meta tasto Funzione. |
Nota: puoi specificare più parole chiave in una
. Ad esempio:
android:numericModifiers="CTRL|SHIFT"
indica
per attivare la voce di menu corrispondente, l'utente deve
premi entrambi i tasti meta Ctrl e Maiusc insieme
con la scorciatoia.
Puoi usare il metodo setNumericShortcut()
per impostare
l'attributo in modo programmatico. Per ulteriori informazioni
l'attributo numericModifier
, consulta
numericModifiers
.
android:checkable
- Booleano. True se l'elemento è controllabile.
android:checked
- Booleano. True se l'elemento è selezionato per impostazione predefinita.
android:visible
- Booleano. True se l'elemento è visibile per impostazione predefinita.
android:enabled
- Booleano. True se l'elemento è abilitato per impostazione predefinita.
android:menuCategory
- Parola chiave. Valore corrispondente a
Menu
CATEGORY_*
costanti, che definiscono la priorità dell'elemento. Valori validi:
Valore | Descrizione |
container | Per gli elementi che fanno parte di un
containerizzato. |
system | Per gli elementi forniti
di un sistema operativo completo. |
secondary | Per gli elementi secondari forniti dall'utente
(utilizzate raramente). |
alternative | Per gli elementi che rappresentano azioni alternative
sui dati attualmente visualizzati. |
android:orderInCategory
- Numero intero. L'ordine di importanza degli elementi in un gruppo.
<group>
- Un gruppo di menu, per creare una raccolta di elementi che condividono caratteristiche, ad esempio se sono
visibili, attivate o selezionabili. Contiene uno o più elementi
<item>
. Deve essere un
secondario di un elemento <menu>
.
Attributi:
android:id
- ID risorsa. Un ID risorsa univoco. Per creare un nuovo ID risorsa per questo elemento,
utilizza il modulo:
"@+id/name"
. Il simbolo più indica che viene creato come nuovo
ID.
android:checkableBehavior
- Parola chiave. Il tipo di comportamento selezionabile per il gruppo. Valori validi:
Valore | Descrizione |
none | Non selezionabile. |
all | Puoi selezionare tutti gli elementi (utilizza le caselle di controllo). |
single | È possibile selezionare un solo elemento (usa la radio
). |
android:visible
- Booleano. True se il gruppo è visibile.
android:enabled
- Booleano. True se il gruppo è abilitato.
android:menuCategory
- Parola chiave. Valore corrispondente a
Menu
CATEGORY_*
costanti, che definiscono la priorità del gruppo. Valori validi:
Valore | Descrizione |
container | Per i gruppi che fanno parte di un
containerizzato. |
system | Per i gruppi forniti
di un sistema operativo completo. |
secondary | Per i gruppi secondari forniti dall'utente
(utilizzate raramente). |
alternative | Per i gruppi che sono azioni alternative
sui dati attualmente visualizzati. |
android:orderInCategory
- Numero intero. L'ordine predefinito degli articoli nella categoria.
- esempio:
- File XML salvato alle ore
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>
Il seguente codice dell'applicazione gonfia il menu dal callback onCreateOptionsMenu(Menu)
e dichiara anche l'azione al clic
per due elementi:
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.
}