Ajouter et gérer des actions

La barre d'application vous permet d'ajouter des boutons d'action utilisateur. Cette fonctionnalité vous permet de mettre Les actions les plus importantes pour le contexte actuel en haut de l'application Par exemple, une application de navigation de photos peut afficher les options Partager et Créer album en haut lorsque l'utilisateur consulte sa pellicule. Quand ? l'utilisateur regarde une photo individuelle, l'application peut afficher la fonction Recadrer et Filtrer.

L'espace dans la barre d'application est limité. Si une application déclare plus d'actions que nécessaire Dans la barre d'application, la barre d'application envoie les actions en excès dans un menu à développer. L'application peut également spécifier qu'une action s'affiche toujours dans le menu à développer, au lieu de s'afficher dans la barre d'application.

Image montrant l'application Now in Android avec une icône de barre d'action
Image 1. Une icône d'action dans "Now in Android" l'application.

Ajouter des boutons d'action

Tous les boutons d'action et autres éléments disponibles dans le menu à développer défini dans un fichier XML ressource de menu. Pour ajouter à la barre d'action, créez un fichier XML dans le fichier Répertoire res/menu/.

Ajoutez un <item> pour chaque élément que vous souhaitez inclure dans la barre d'action, comme indiqué dans les Voici l'exemple de fichier XML de menu suivant:

<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'attribut app:showAsAction indique si l'action est affiché sous la forme d'un bouton dans la barre d'application. Si vous définissez app:showAsAction="ifRoom", comme dans l'exemple de code action favori : l'action s'affiche sous la forme d'un bouton s'il y a de la place dans la barre d’application. Si l'espace est insuffisant, les actions excédentaires sont envoyées dans le menu à développer. Si vous définissez app:showAsAction="never", comme dans l'action settings de l'exemple de code : l'action est toujours répertoriée dans le et n'est pas affichée dans la barre d'application.

Le système utilise l'icône de l'action comme bouton d'action si celle-ci s'affiche dans la barre d'application. Vous trouverez de nombreuses icônes utiles dans Icônes Material.

Répondre aux actions

Lorsque l'utilisateur sélectionne l'un des éléments de la barre d'application, le système appelle votre activité onOptionsItemSelected() de rappel et transmet un Objet MenuItem pour indiquer l'élément sur lequel l'utilisateur a appuyé. Lors de la mise en œuvre onOptionsItemSelected(), appelez la méthode MenuItem.getItemId() pour identifier l'élément sur lequel l'utilisateur a appuyé. L'ID renvoyé correspond à la valeur que vous déclarer dans l'élément <item> correspondant android:id.

Par exemple, l'extrait de code suivant permet de vérifier l'action sélectionnée par l'utilisateur. Si la méthode ne reconnaît pas l'action de l'utilisateur, elle appelle la super-classe. méthode:

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);

    }
}