La barra de la app te permite agregar botones para las acciones del usuario. Esta función te permite ubicar las acciones más importantes para el contexto actual en la parte superior de la app Por ejemplo, una app de navegación de fotos podría mostrar las opciones compartir y crear de álbumes que se encuentran en la parte superior cuando el usuario mira su rollo de fotos. Cuándo el usuario mira una foto individual, la app puede mostrar recorte y filter.
El espacio en la barra de la app es limitado. Si una app declara más acciones de las que pueden ajustarse En la barra de la app, envía las acciones sobrantes a un menú ampliado. La app también puede especificar que siempre se muestre una acción en el menú ampliado en lugar de mostrarse en la barra de la app.
Cómo agregar botones de acción
Todos los botones de acción y otros elementos disponibles en el menú ampliado de acciones son
definido en un archivo XML
recurso de menú. Para agregar
acciones en la barra de acciones, crea un nuevo archivo en formato XML en el
res/menu/
.
Agrega un
<item>
para cada elemento que desees incluir en la barra de acciones, como se muestra en el
siguiente archivo XML de menú de ejemplo:
<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>
El atributo app:showAsAction
especifica si se debe realizar la acción
se muestra como un botón en la barra de la aplicación. Si estableces
app:showAsAction="ifRoom"
, como en el archivo
favorite: La acción se muestra como un botón si hay espacio en
la barra de la aplicación. Si no hay suficiente espacio, las acciones sobrantes se envían al
menú ampliado. Si configuras app:showAsAction="never"
, como en
la acción settings del código de ejemplo, la acción siempre aparece en el
el menú ampliado y no se muestra en la barra de la app.
El sistema usa el ícono de la acción como botón de acción si esta se muestra en la barra de la aplicación. Puedes encontrar muchos iconos útiles en Íconos de material.
Cómo responder a acciones
Cuando el usuario selecciona uno de los elementos de la barra de la app, el sistema llama a
de la actividad
onOptionsItemSelected()
de devolución de llamada y pasa un
Objeto MenuItem
para indicar qué elemento se presionó. En la implementación de
onOptionsItemSelected()
, llama al
MenuItem.getItemId()
para determinar qué elemento se presionó. El ID devuelto coincide con el valor que
declarar en el elemento <item>
correspondiente
android:id
.
Por ejemplo, el siguiente fragmento de código verifica qué acción selecciona el usuario. Si el método no reconoce la acción del usuario, invoca la superclase. método:
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); } }