La barra delle app ti consente di aggiungere pulsanti per le azioni utente. Questa funzionalità ti consente di inserire le azioni più importanti per il contesto attuale nella parte superiore dell'app. Ad esempio, un'app di navigazione tra le foto potrebbe mostrare i pulsanti Condividi e Crea album nella parte superiore quando l'utente sta guardando il rullino fotografico. Quando l'utente guarda una singola foto, l'app potrebbe mostrare i pulsanti Ritaglia e Filtra.
Lo spazio nella barra delle app è limitato. Se un'app dichiara più azioni di quelle che possono essere visualizzate nella barra delle app, la barra delle app invia le azioni in eccesso a un menu overflow. L'app può anche specificare che un'azione venga sempre visualizzata nel menu overflow, anziché nella barra delle app.
Aggiungere pulsanti di azione
Tutti i pulsanti di azione e gli altri elementi disponibili nell'overflow delle 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 di esempio del menu:
<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
visualizzata come pulsante nella barra delle app. Se imposti
app:showAsAction="ifRoom", come nell'azione
favorite del codice di esempio, l'azione viene visualizzata come pulsante se c'è spazio nella
barra delle app. Se non c'è spazio 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 visualizzata nella barra delle app.
Il sistema utilizza l'icona dell'azione come pulsante di azione se l'azione viene visualizzata nella barra delle app. Puoi trovare molte icone utili in Material Icons.
Rispondere alle azioni
Quando l'utente seleziona uno degli elementi della barra delle 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, il seguente snippet di codice controlla l'azione selezionata dall'utente. Se il metodo non riconosce l'azione dell'utente, richiama il metodo della 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); } }