Risorsa di menu

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:
ValoreDescrizione
ifRoomInserisci 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.
withTextIncludi 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 |.
neverNon posizionare mai questo elemento nella barra delle app. Elenca invece l'elemento nel menu extra della barra dell'app.
alwaysPosiziona 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.
collapseActionViewLa 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:
ValoreDescrizione
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:
ValoreDescrizione
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:
ValoreDescrizione
containerPer gli elementi che fanno parte di un contenitore.
systemPer gli elementi forniti dal sistema.
secondaryPer elementi che sono opzioni secondarie fornite dall'utente (utilizzate raramente).
alternativePer 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:
ValoreDescrizione
noneNon selezionabile.
allTutti gli elementi possono essere selezionati (utilizza le caselle di controllo).
singlePuoi 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:
ValoreDescrizione
containerPer i gruppi che fanno parte di un container.
systemPer i gruppi forniti dal sistema.
secondaryPer i gruppi che sono opzioni secondarie fornite dall'utente (utilizzate raramente).
alternativePer 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.
}