Una risorsa di menu definisce un menu dell'applicazione, ovvero un menu opzioni, un menu contestuale o un sottomenu, che può essere aumentato in modo artificioso con MenuInflater
.
Per una guida sull'utilizzo dei menu, vedi Aggiungere menu.
- percorso file:
res/menu/filename.xml
Il nome file viene utilizzato come ID risorsa
- tipo di dati della risorsa compilata:
- Puntatore di risorsa a una risorsa
Menu
(o una sottoclasse)
- riferimento risorsa:
-
In Java:
R.menu.filename
In 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>
- :
-
- Obbligatorio. Questo deve essere il nodo radice. Contiene gli elementi
<item>
e/o <group>
.
Attributi:
xmlns:android
- spazio dei nomi XML. Obbligatorio. Definisce lo spazio dei nomi XML, che
deve essere
"http://schemas.android.com/apk/res/android"
.
<item>
- Una voce del 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 si tratta di un nuovo ID.
android:title
- Risorsa stringa. Il titolo del menu come risorsa di stringa o stringa non elaborata.
android:titleCondensed
- Risorsa stringa. Un titolo ridotto come risorsa di stringa o come stringa non elaborata. Questo
titolo viene utilizzato per situazioni in cui il titolo normale è troppo lungo.
android:icon
- Risorsa tracciabile. Un'immagine da utilizzare come icona della voce di menu.
android:onClick
- Nome del metodo. Il metodo da chiamare quando si fa clic su questa voce di menu. Il metodo deve essere dichiarato nell'attività come pubblico. Accetta
MenuItem
come unico parametro, che indica l'articolo su cui è stato fatto clic. Questo metodo ha la precedenza sul callback standard a onOptionsItemSelected()
. Vedi l'esempio alla fine di questa pagina.
Avviso: se offuschi il codice utilizzando ProGuard o uno strumento simile, assicurati di escludere dalla ridenominazione il metodo specificato in questo attributo, perché potrebbe interrompere la funzionalità.
Introdotta nel livello API 11.
android:showAsAction
- Parola chiave. Quando e come questo elemento viene visualizzato come attività nella
barra dell'app. Una voce di menu può essere visualizzata come attività solo quando l'attività include una barra delle app. Valori validi:
Valore | Descrizione |
ifRoom | Inserisci questo elemento nella barra dell'app solo se c'è spazio per l'elemento. Se non c'è spazio per tutti gli elementi contrassegnati con "ifRoom" , gli elementi con i valori orderInCategory più bassi vengono visualizzati come azioni, mentre gli elementi rimanenti vengono visualizzati nel menu extra. |
withText | Includi anche il testo del titolo (definito
da android:title ) nell'attività. Puoi includere questo valore insieme a uno degli altri come flag impostati, separandoli con una barra verticale | . |
never | Non posizionare mai questo elemento nella barra delle app. Elenca invece l'elemento nel menu extra della barra dell'app. |
always | Posiziona sempre questo elemento nella barra delle app.
Evita di utilizzarlo, a meno che non sia fondamentale che l'elemento venga sempre visualizzato nella barra
delle azioni. L'impostazione di più elementi in modo che vengano sempre visualizzati come attività può comportare la sovrapposizione
con un'altra UI nella barra dell'app. |
collapseActionView | La visualizzazione dell'azione associata a questa attività (come dichiarata da android:actionLayout o android:actionViewClass ) è comprimibile. Introdotta nel livello API 14. |
Consulta la sezione Aggiungere la barra delle app
per ulteriori informazioni.
Introdotta nel livello API 11.
android:actionLayout
- Risorsa layout. Un layout da utilizzare come visualizzazione delle azioni.
Per maggiori informazioni, consulta la sezione Utilizzare le visualizzazioni
delle azioni e i fornitori di azioni.
Introdotta nel livello API 11.
android:actionViewClass
- Nome classe. Un nome completo della classe per
View
da utilizzare come visualizzazione azione. Ad esempio,
"android.widget.SearchView"
per utilizzare SearchView
come visualizzazione azione.
Per maggiori informazioni, consulta la sezione Utilizzare le visualizzazioni
delle azioni e i fornitori di azioni.
Avviso: se offuschi il codice utilizzando ProGuard o uno strumento simile, assicurati di escludere la classe specificata in questo attributo dalla ridenominazione, perché potrebbe interrompere la funzionalità.
Introdotta nel livello API 11.
android:actionProviderClass
- Nome classe. Un nome completo della classe per
ActionProvider
da utilizzare al posto dell'attività. Ad esempio, "android.widget.ShareActionProvider"
per utilizzare ShareActionProvider
.
Per maggiori informazioni, consulta la sezione Utilizzare le visualizzazioni
delle azioni e i fornitori di azioni.
Avviso: se offuschi il codice utilizzando ProGuard o uno strumento simile, assicurati di escludere la classe specificata in questo attributo dalla ridenominazione, perché potrebbe interrompere la funzionalità.
Introdotta nel livello API 14.
android:alphabeticShortcut
- Char. Un carattere per il tasto di scelta rapida alfabetico.
android:numericShortcut
- Numero intero. Un numero per il tasto di scelta rapida numerica.
android:alphabeticModifiers
- Parola chiave. Un modificatore per la scorciatoia alfabetica della voce di menu. Il valore predefinito corrisponde alla chiave Control. Valori validi:
Valore | Descrizione |
META |
Corrisponde alla meta chiave Meta. |
CTRL |
Corrisponde alla meta chiave Control. |
ALT |
Corrisponde al tasto meta Alt. |
MAIUSC |
Corrisponde al tasto meta Maiusc. |
SIM |
Corrisponde alla meta chiave Sym. |
FUNZIONE |
Corrisponde al metatasto Function. |
Nota: puoi specificare più parole chiave in un
attributo. Ad esempio, android:alphabeticModifiers="CTRL|SHIFT"
indica che per attivare la voce di menu corrispondente, l'utente deve premere entrambi i meta tasti Ctrl e Maiusc insieme alla scorciatoia.
Puoi utilizzare il metodo setAlphabeticShortcut()
per impostare i valori degli attributi in modo programmatico. Per maggiori informazioni
sull'attributo alphabeticModifier
, consulta
alphabeticModifiers
.
android:numericModifiers
- Parola chiave. Modificatore della scorciatoia numerica della voce di menu.
Il valore predefinito corrisponde alla chiave Control. Valori validi:
Valore | Descrizione |
META |
Corrisponde alla meta chiave Meta. |
CTRL |
Corrisponde alla meta chiave Control. |
ALT |
Corrisponde al tasto meta Alt. |
MAIUSC |
Corrisponde al tasto meta Maiusc. |
SIM |
Corrisponde alla meta chiave Sym. |
FUNZIONE |
Corrisponde al metatasto Function. |
Nota: puoi specificare più parole chiave in un
attributo. Ad esempio, android:numericModifiers="CTRL|SHIFT"
indica che per attivare la voce di menu corrispondente, l'utente deve premere entrambi i meta tasti Ctrl e Maiusc insieme alla scorciatoia.
Puoi utilizzare il metodo setNumericShortcut()
per impostare
i valori degli attributi in modo programmatico. Per maggiori informazioni
sull'attributo numericModifier
, consulta
numericModifiers
.
android:checkable
- Booleano. True se l'elemento è selezionabile.
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 è attivato per impostazione predefinita.
android:menuCategory
- Parola chiave. Valore corrispondente alle costanti
CATEGORY_*
Menu
, che definiscono la priorità dell'elemento. Valori validi:
Valore | Descrizione |
container | Per gli elementi che fanno parte
di un contenitore. |
system | Per gli elementi forniti dal sistema. |
secondary | Per elementi che sono opzioni secondarie
fornite dall'utente (utilizzate raramente). |
alternative | Per gli elementi che sono azioni alternative
sui dati attualmente visualizzati. |
android:orderInCategory
- Numero intero. L'ordine di importanza dell'elemento all'interno di un gruppo.
<group>
- Un gruppo di menu per creare una raccolta di elementi che condividono caratteristiche, ad esempio se sono visibili, attivati o selezionabili. Contiene uno o più elementi
<item>
. Deve essere un elemento 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 si tratta di un nuovo ID.
android:checkableBehavior
- Parola chiave. Il tipo di comportamento selezionabile per il gruppo. Valori validi:
Valore | Descrizione |
none | Non selezionabile. |
all | Tutti gli elementi possono essere selezionati (utilizza le caselle di controllo). |
single | Puoi selezionare un solo elemento (usa i pulsanti di opzione). |
android:visible
- Booleano. True se il gruppo è visibile.
android:enabled
- Booleano. True se il gruppo è abilitato.
android:menuCategory
- Parola chiave. Valore corrispondente alle costanti
CATEGORY_*
Menu
che definiscono la priorità del gruppo. Valori validi:
Valore | Descrizione |
container | Per i gruppi che fanno parte
di un container. |
system | Per i gruppi forniti dal sistema. |
secondary | Per i gruppi che sono opzioni secondarie
fornite 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 all'interno della categoria.
- esempio:
- File XML salvato in
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 aumenta il menu dal callback onCreateOptionsMenu(Menu)
e dichiara anche il callback
al clic per due degli 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.
}