Estoy migrando de ActionBar
a Toolbar
en mi aplicación. Pero no sé cómo mostrar y configurar el evento de clic en Flecha hacia atrás Toolbar
como lo hice en Actionbar
.
Con ActionBar
, llamo mActionbar.setDisplayHomeAsUpEnabled(true)
. Pero no existe un método similar como este.
¿Alguien ha enfrentado alguna vez esta situación y de alguna manera ha encontrado una manera de resolverla?
Respuestas:
Si está utilizando un,
ActionBarActivity
entonces puede decirle a Android que lo use deToolbar
laActionBar
misma manera:Y luego llama a
trabajará. También puede usar eso en Fragmentos que están unidos a
ActionBarActivities
usted, puede usarlo así:Si no está utilizando
ActionBarActivities
o si desea obtener la flecha hacia atrás en unaToolbar
que no está configurada comoSupportActionBar
suya, puede usar lo siguiente:Si está utilizando
android.support.v7.widget.Toolbar
, entonces debe agregar el siguiente código a suAppCompatActivity
:fuente
R.drawable.abc_ic_ab_back_mtrl_am_alpha
ningunoR.drawable.ic_action_back
.toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Veo muchas respuestas, pero aquí está la mía, que no se menciona antes. Funciona desde API 8+.
fuente
onOptionItemSelected()
Esto completa lo que MrEngineer13 no ha cubierto en su respuesta.Hay muchas formas de lograrlo, aquí está mi favorito:
Diseño:
Actividad:
fuente
setNavigationOnClickListener()
, puede agregarcase android.R.id.home:
dentro de 'onOptionsItemSelected ()'.case android.R.id.home
No funcionó para mí. así que después de buscar por un tiempo, su respuesta funcionó ... gracias.puede usar el método setNavigationIcon de la barra de herramientas. Android Doc
fuente
setNavigationOnClickListener()
se ha agregado en el nivel 21 de la API y superioresSi no desea crear una personalizada
Toolbar
, puede hacer estoEn ti
AndroidManifest.xml
También puede poner esto
android:theme="@style/Theme.AppCompat.Light"
en la<aplication>
etiqueta, para aplicar a todas las actividadesfuente
if (item.getItemId() == android.R.id.home)
Y para API 21+
android:navigationIcon
fuente
Utilicé este método de la documentación para desarrolladores de Google :
Si obtiene una excepción de puntero nulo, podría depender del tema. Intente usar un tema diferente en el manifiesto o use esto alternativamente:
Luego, en el manifiesto, donde configuro la actividad principal para la actividad actual:
¡Espero que esto ayude!
fuente
getSupportActionBar()
trabajado. ¡Gracias!Si estaba usando
AppCompatActivity
y ha seguido el camino de no usarlo, porque no quería obtener el automáticoActionBar
que proporciona, porque desea separarloToolbar
, debido a sus necesidades de Diseño de materiales y ,CoordinatorLayout
oAppBarLayout
, entonces, considere esto:Todavía puede usar el
AppCompatActivity
, no necesita dejar de usarlo solo para poder usar un<android.support.v7.widget.Toolbar>
en su xml. Simplemente apague el estilo de la barra de acción de la siguiente manera:Primero, deriva un estilo de uno de los temas de NoActionBar que te gusta en tu
styles.xml
, yo uséTheme.AppCompat.Light.NoActionBar
así:En el manifiesto de su aplicación, elija el tema de estilo hijo que acaba de definir, así:
En su Activity Xml, si la barra de herramientas se define así:
Luego, y esta es la parte importante, configura la barra de acción de soporte para AppCompatActivity que está extendiendo, de modo que la barra de herramientas en su xml se convierta en la barra de acción. Creo que esta es una mejor manera, porque simplemente puede hacer las muchas cosas que ActionBar permite, como menús, título de actividad automática, manejo de selección de elementos, etc. sin recurrir a agregar controladores de clics personalizados, etc.
En la anulación onCreate de su Actividad, haga lo siguiente:
fuente
fuente
Manera simple y fácil de mostrar el botón de retroceso en la barra de herramientas
Pegue este código en el método onCreate
Pegue este método de anulación fuera del método onCreate
fuente
En Kotlin sería
fuente
Fácilmente puedes hacerlo.
Créditos: https://freakycoder.com/android-notes-24-how-to-add-back-button-at-toolbar-941e6577418e
fuente
En el
AppCompatActivity
por ejemplo puedes hacerfuente
En su archivo de manifiesto para la actividad en la que desea agregar un botón de retroceso, utilizaremos la propiedad android: parentActivityName
PS Este atributo se introdujo en el API Nivel 16.
fuente
Esto funcionó perfectamente
fuente
Primero, debe inicializar la barra de herramientas:
luego llame al botón Atrás desde la barra de acción:
fuente
Si desea obtener la flecha hacia atrás en una barra de herramientas que no está configurada como su SupportActionBar:
(kotlin)
para obtener resolución de los atributos:
fuente
Agregue esto al xml de la actividad en la carpeta de diseño:
Haga clic en la barra de herramientas, agréguelos al método onCreate:
fuente
Posiblemente una forma más confiable de obtener el ícono hacia arriba de su tema (si no usa la barra de herramientas como su barra de acción):
Para convertir el atributo del tema en dibujable, utilicé una función de extensión:
fuente
Si está utilizando DrawerLayout con ActionBarDrawerToggle , para mostrar el botón Atrás en lugar del botón Menú (y viceversa), debe agregar este código en su Actividad:
Entonces, cuando necesite mostrar el botón Atrás en lugar del botón Menú , llame a showBackInToolbar (verdadero) , y si necesita el botón Menú , llame a showBackInToolbar (falso) .
Puede generar la flecha hacia atrás (ic_arrow_back_white_32dp) aquí , buscar arrow_back en la sección de imágenes prediseñadas (use el valor predeterminado de 32dp con 8dp de relleno). Solo selecciona el color que quieras.
fuente
Siempre puede agregar una
Relative layout
o unaLinear Layout
en suToolbar
y colocar una vista de imagen para el icono de atrás o cerrar el icono en cualquier lugar de la barra de herramientas como deseePor ejemplo, he usado diseño relativo en mi barra de herramientas
Y se ve así:
Puede agregar escucha de clics en esa vista de imagen desde Actividad o fragmento como este.
fuente
Con Kotlin se convirtió en:
Xml:
En su actividad: -
fuente
Si está utilizando JetPack Navigation.
Aquí está el diseño para MainActivity
Configure su barra de herramientas en su actividad como a continuación en onCreate () de su clase de Actividad.
setupActionBarWithNavController (navController) Creará un botón de retroceso en la barra de herramientas si es necesario y maneja la funcionalidad backButton. Si necesita escribir una funcionalidad CustomBack, cree un callBack como se muestra a continuación en su método fragment onCreate ()
De la documentación: https://developer.android.com/guide/navigation/navigation-custom-back
fuente
Si está utilizando el
androidx.appcompat.app.AppCompatActivity
solo uso:Luego simplemente defina en la
Manifest.xml
Actividad principal.En cambio, si está utilizando
Toolbar
ay desea un comportamiento personalizado, simplemente use:y en tu actividad:
fuente