Risorsa di menu

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:
ValoreDescrizione
ifRoomPosiziona 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.
withTextIncludi 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 |.
neverNon inserire mai questo elemento nella barra delle app. Indica invece l'elemento nell'overflow della barra delle app o dal menu Fogli Google.
alwaysPosiziona 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.
collapseActionViewLa 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:
ValoreDescrizione
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:
ValoreDescrizione
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:
ValoreDescrizione
containerPer gli elementi che fanno parte di un containerizzato.
systemPer gli elementi forniti di un sistema operativo completo.
secondaryPer gli elementi secondari forniti dall'utente (utilizzate raramente).
alternativePer 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:
ValoreDescrizione
noneNon selezionabile.
allPuoi 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:
ValoreDescrizione
containerPer i gruppi che fanno parte di un containerizzato.
systemPer i gruppi forniti di un sistema operativo completo.
secondaryPer i gruppi secondari forniti dall'utente (utilizzate raramente).
alternativePer 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.
}