La barra dell'app ti consente di aggiungere pulsanti per le azioni degli utenti. Questa funzionalità ti consente di inserire le azioni più importanti per il contesto corrente nella parte superiore dell'app. Ad esempio, un'app di navigazione di foto potrebbe mostrare i pulsanti Condividi e Crea album in alto quando l'utente sta visualizzando il suo rullino fotografico. Quando l'utente guarda una singola foto, nell'app potrebbero essere visualizzati i pulsanti Ritaglia e Filtra.
Lo spazio nella barra dell'app è limitato. Se un'app dichiara un numero di azioni superiore a quello consentito nella barra dell'app, quest'ultima invia le azioni in eccesso a un menu overflow. L'app può anche specificare che un'azione venga sempre visualizzata nel menu extra, anziché nella barra dell'app.

Aggiungi pulsanti di azione
Tutti i pulsanti di azione e gli altri elementi disponibili nell'overflow di azioni sono definiti in una risorsa di menu XML. Per aggiungere azioni alla barra delle azioni, crea un nuovo file XML nella directory res/menu/
del tuo progetto.
Aggiungi un elemento <item>
per ogni elemento che vuoi includere nella barra delle azioni, come mostrato nel seguente file XML del menu di esempio:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- "Mark Favorite", must appear as action button if possible. --> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_favorite_black_48dp" android:title="@string/action_favorite" app:showAsAction="ifRoom"/> <!-- Settings, must always be in the overflow. --> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never"/> </menu>
L'attributo app:showAsAction
specifica se l'azione viene
mostrata come un pulsante nella barra dell'app. Se imposti app:showAsAction="ifRoom"
, come nell'azione preferita del codice di esempio, l'azione viene visualizzata sotto forma di pulsante se nella barra dell'app c'è spazio. Se lo spazio non è sufficiente, le azioni in eccesso vengono inviate al
menu extra. Se imposti app:showAsAction="never"
, come nell'azione settings del codice di esempio, l'azione viene sempre elencata nel menu extra e non viene visualizzata nella barra dell'app.
Il sistema utilizza l'icona dell'azione come pulsante di azione se l'azione viene visualizzata nella barra dell'app. Puoi trovare molte icone utili nella sezione Icone materiali.
Rispondere alle azioni
Quando l'utente seleziona uno degli elementi della barra dell'app, il sistema chiama il
metodo di callback
onOptionsItemSelected()
dell'attività e passa un
oggetto MenuItem
per indicare quale elemento è stato toccato. Nell'implementazione di onOptionsItemSelected()
, chiama il metodo MenuItem.getItemId()
per determinare quale elemento è stato toccato. L'ID restituito corrisponde al valore
dichiarato nell'attributo android:id
dell'elemento <item>
corrispondente.
Ad esempio, lo snippet di codice riportato di seguito controlla l'azione selezionata dall'utente. Se il metodo non riconosce l'azione dell'utente, richiama il metodo superclasse:
Kotlin
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { R.id.action_settings -> { // User chooses the "Settings" item. Show the app settings UI. true } R.id.action_favorite -> { // User chooses the "Favorite" action. Mark the current item as a // favorite. true } else -> { // The user's action isn't recognized. // Invoke the superclass to handle it. super.onOptionsItemSelected(item) } }
Java
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: // User chooses the "Settings" item. Show the app settings UI. return true; case R.id.action_favorite: // User chooses the "Favorite" action. Mark the current item as a // favorite. return true; default: // The user's action isn't recognized. // Invoke the superclass to handle it. return super.onOptionsItemSelected(item); } }