Cómo configurar la barra de la app

En su forma más básica, la barra de acciones muestra el título de la actividad de un lado y un menú ampliado del otro. Incluso en esta forma sencilla, la barra de app proporciona información útil a los usuarios y ayuda a dar una apariencia coherente a las apps de Android.

Figura 1: Una barra de la app con el título de la app y el menú ampliado

A partir de Android 3.0 (API nivel 11), todas las actividades que usan el tema predeterminado tienen un elemento ActionBar como barra de la app. No obstante, se fueron agregando funciones de la barra de la app gradualmente al elemento ActionBar nativo en diferentes versiones de Android. Como consecuencia, el elemento ActionBar nativo se comporta de manera diferente según la versión del sistema Android que use un dispositivo. Por el contrario, las funciones más recientes se agregan a la versión de Toolbar de la biblioteca de compatibilidad y están disponibles en todos los dispositivos que puedan usar la biblioteca de compatibilidad.

Por este motivo, debes usar la clase Toolbar de la biblioteca de compatibilidad para implementar las barras de la app de tus actividades. El uso de la barra de herramientas de la biblioteca de compatibilidad ayuda a garantizar que tu app tenga un comportamiento coherente en la mayor cantidad de dispositivos posible. Por ejemplo, el widget Toolbar proporciona una experiencia de material design en dispositivos con Android 2.1 (API nivel 7) o versiones posteriores, pero la barra de acciones nativa no admite material design a menos que el dispositivo tenga Android 5.0 (API nivel 21) o versiones posteriores.

Cómo agregar una barra de herramientas a una actividad

En los siguientes pasos, se describe la manera de configurar un elemento Toolbar como la barra de la app de tu actividad:
  1. Agrega la biblioteca de compatibilidad v7 appcompat a tu proyecto, como se describe en Configuración de la biblioteca de compatibilidad.
  2. Asegúrate de que la actividad extienda AppCompatActivity:

    Kotlin

        class MyActivity : AppCompatActivity() {
          // ...
        }
        

    Java

        public class MyActivity extends AppCompatActivity {
          // ...
        }
        

    Nota: Realiza este cambio en todas las actividades de tu app que usen Toolbar como barra de la app.

  3. En el manifiesto de la app, configura el elemento <application> para usar uno de los temas NoActionBar de appcompat. El uso de uno de estos temas evita que en la app se use la clase ActionBar nativa para proporcionar la barra de la app. Por ejemplo:
        <application
            android:theme="@style/Theme.AppCompat.Light.NoActionBar"
            />
        
  4. Agrega un elemento Toolbar al diseño de la actividad. Por ejemplo, el siguiente código de diseño agrega un elemento Toolbar y hace que este flote por encima de la actividad:
        <android.support.v7.widget.Toolbar
           android:id="@+id/my_toolbar"
           android:layout_width="match_parent"
           android:layout_height="?attr/actionBarSize"
           android:background="?attr/colorPrimary"
           android:elevation="4dp"
           android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
           app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
        

    Consulta la especificación de material design para obtener recomendaciones sobre la elevación de la barra de la app.

    Ubica la barra de herramientas en la parte superior del diseño de la actividad, ya que la usarás como una barra de la app.

  5. En el método onCreate() de la actividad, llama al método setSupportActionBar() de la actividad y pasa la barra de herramientas de la actividad. Este método establece la barra de herramientas como la barra de la app de la actividad. Por ejemplo:

    Kotlin

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_my)
            // Note that the Toolbar defined in the layout has the id "my_toolbar"
            setSupportActionBar(findViewById(R.id.my_toolbar))
        }
        

    Java

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my);
            Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
            setSupportActionBar(myToolbar);
        }
        

Ahora tu app tiene una barra de acciones básica. De forma predeterminada, la barra de acciones contiene solo el nombre de la app y un menú ampliado. El menú de opciones inicialmente contiene solo el elemento Configuración. Puedes agregar más opciones a la barra de acciones y al menú ampliado, como se describe en Cómo agregar y administrar acciones.

Cómo usar los métodos de utilidad de la barra de la app

Una vez que configures la barra de herramientas como una barra de la app de la actividad, podrás acceder a los diferentes métodos de utilidad que proporciona la clase ActionBar de la biblioteca de compatibilidad v7 appcompat. Este enfoque te permite realizar varias acciones útiles, como ocultar y mostrar la barra de la app.

Para usar los métodos de utilidad de ActionBar, llama al método getSupportActionBar() de la actividad. Este método muestra una referencia a un objeto appcompat ActionBar. Una vez que tengas esa referencia, podrás llamar a cualquiera de los métodos de ActionBar para ajustar la barra de la app. Por ejemplo, para ocultar la barra de la app llama, a ActionBar.hide().