Aggiungi e gestisci azioni

La barra delle app ti consente di aggiungere pulsanti per le azioni degli utenti. Questa funzionalità ti consente di le azioni più importanti per il contesto corrente nella parte superiore dell'app. Ad esempio, un'app di navigazione delle foto potrebbe mostrare le opzioni Condividi e Crea album in alto quando l'utente guarda il suo rullino. Quando l'utente guarda una singola foto, l'app potrebbe mostrare ritagli e pulsanti di filtro.

Lo spazio nella barra delle app è limitato. Se un'app dichiara più azioni di quelle idonee nella barra delle app, le azioni in eccesso vengono inviate a un menu overflow. L'app può anche specificare che un'azione venga sempre visualizzata nel menu extra. anziché sulla barra delle app.

Un'immagine che mostra Ora nell'app Android con l'icona di una barra delle azioni
. Figura 1. Un'icona di azione nella sezione "Ora in Android" dell'app.
di Gemini Advanced.
.

Aggiungere pulsanti di azione

Tutti i pulsanti di azione e gli altri elementi disponibili nell'overflow di azioni vengono definiti in un file XML risorsa del menu. Per aggiungere azioni nella barra delle azioni, crea un nuovo file XML nel Directory res/menu/.

Aggiungi un <item> per ogni elemento che vuoi includere nella barra delle azioni, come mostrato nell' 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 è che appare sotto forma di pulsante sulla barra delle app. Se imposti app:showAsAction="ifRoom", come nel codice di esempio preferito: l'azione viene visualizzata come un pulsante se c'è spazio nella barra delle app. Se non c'è abbastanza spazio, le azioni in eccesso vengono inviate alla menu extra. Se imposti app:showAsAction="never", come l'azione impostazioni del codice di esempio: l'azione è sempre elencata nella menu extra e non visualizzato 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 Icone del Material.

Rispondere alle azioni

Quando l'utente seleziona una delle voci della barra delle app, il sistema chiama la tua dell'attività onOptionsItemSelected() di callback di Google e passa un Oggetto MenuItem per indicare quale elemento è stato toccato. Nell'implementazione onOptionsItemSelected(), chiama il MenuItem.getItemId() per determinare quale elemento è stato toccato. L'ID restituito corrisponde al valore specificato dichiarano nei tag dell'elemento <item> Attributo android:id.

Ad esempio, il seguente snippet di codice verifica l'azione selezionata dall'utente. Se il metodo non riconosce l'azione dell'utente, richiama la 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);

    }
}