Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Cómo configurar la barra de 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 app con el título de la app y el menú ampliado

A partir de Android 3.0 (nivel de API 11), todas las actividades que usan el tema predeterminado tienen una ActionBar como barra de app. No obstante, se han ido agregando funciones de la barra de app gradualmente a la ActionBar nativa en diferentes versiones de Android. Como consecuencia, la ActionBar nativa se comporta de forma diferente según la versión del sistema Android que ejecute 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 usarla.

Por este motivo, deberías usar la clase Toolbar de la biblioteca de compatibilidad para implementar las barras de 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 (nivel de API 7) o versiones posteriores, pero la barra de acciones nativa no admite material design a menos que el dispositivo ejecute Android 5.0 (nivel de API 21) o versiones posteriores.

Cómo agregar una barra de herramientas a una actividad

En estos pasos, se describe cómo configurar una Toolbar como la barra de 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 app.

  3. En el manifiesto de la app, establece el elemento <application> para que use uno de los temas NoActionBar de appcompat. De esta manera, se evita que la app use la clase ActionBar nativa para proporcionar la barra de app. Por ejemplo:
        <application
            android:theme="@style/Theme.AppCompat.Light.NoActionBar"
            />
        
  4. Agrega una Toolbar al diseño de la actividad. Por ejemplo, el siguiente código de diseño agrega una Toolbar y hace que parezca que flota 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 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 app.

  5. En el método onCreate() de la actividad, llama al método setSupportActionBar() y transfiere la barra de herramientas de la actividad. Este método establece la barra de herramientas como la barra de 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 app

Una vez que configures la barra de herramientas como barra de 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 app.

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