Cómo agregar una barra de herramientas a una actividad que no es AppCompatActivity
1. Agregar controles de barra de herramientas al archivo de diseño
El demandado ya no mantiene ActionBar y debe ser reemplazada por una barra de herramientas que pueda proporcionar más flexibilidad de interfaz de usuario y hacer que la actividad sea más compatible. con el patrón de interfaz de usuario de Material Design.
Dado que usaremos el paquete de soporte aquí, usaremos la versión compatible de la barra de herramientas, que de otro modo solo funcionaría con API 21+. minHeight="@dimen/abc_action_bar_
7 default_height_material"
8 android:background="?attr/colorPrimary"
9 />
2, Cambiar el tema:
Como queremos incrustar la barra de herramientas en el archivo de diseño, necesitamos un tema que no admita ActionBar.
Así que antes de asegurarte de usar el tema Theme.AppCompat.NoActionBar en el archivo estilos.xml.
Se recomienda especialmente agregar el elemento de color de diseño de material que se muestra a continuación a su tema, lo que permitirá colorear fácilmente las barras de herramientas y de estado (solo disponible para dispositivos superiores a API 21):
p>
1
2
3
4
5
6
7
9
10 < /style>
3. Agregar AppCompatDelegate a la actividad
AppCompatDelegate es un delegado que proporciona las características de AppCompatActivity a la actividad y solo se puede crear mediante el método create(). requiere dos parámetros: Actividad y AppCompatCallback.
Entonces, primero, implementemos la Actividad como la interfaz AppCompatCallback, en cuyo caso la interfaz se puede implementar sin especificar qué método sobrecargar.
1 clase pública MainActivity extiende la actividad implementa AppCompatCallback {
2 @Override
3 public void onSupportActionModeStarted (modo ActionMode) {
4 //dejemos esto vacío、
5 }
6 @Override
7 public void onSupportActionModeFinished(modo ActionMode) {
8 // dejemos esto vacío, por ahora
9 }
10 }
Luego, en el método onCreate() de la Actividad,
AppCompatDelegate creará AppCompatDelegate a través del método AppCompatDelegate.create();
Llame a AppCompatDelegate.create() (algunos métodos del ciclo de vida de la Actividad son aplicados por el proxy AppCompatDelegate)
Pasar El método AppCompatDelegate.setContentView() completa el archivo de diseño.
Complete el archivo de diseño mediante el método AppCompatDelegate.setContentView();
Agregue una barra de herramientas a AppCompatDelegate mediante AppCompatDelegate.setSupportActionbar(). onCreate(savedInstanceState);
5 //vamos a crear el delegado, pasando la actividad en ambos argumentos (Actividad, AppCompatCallback)
6 delegado = AppCompatDelegate.create(this, this);
7 //necesitamos llamar al onCreate() del AppCompatDelegate
8 delegado.onCreate(savedInstanceState);
9 //usamos el delegado para inflar el diseño
10 delegado.actividad_main);
11 //Finalmente, agreguemos la barra de herramientas
12 barra de herramientas barra de herramientas= (Barra de herramientas) findViewById (R .id.my_ awesome_toolbar);
13 delegado.setSupportActionBar(toolbar);
14 }
Específicamente, se recomienda que una Actividad solo pueda vincularse a una instancia de AppCompatDelegate, por lo que se puede crear una nueva instancia de AppCompatDelegate a través del método create(), que debe permanecer en la Actividad hasta que se destruya la Actividad.
Ahora que ha terminado, ejecute su aplicación y su Actividad tendrá mágicamente una barra de herramientas y se verá exactamente como la AppCompatActivity que diseñó.