Añadir una Toolbar a la app Android usando Kotlin y AndroidX


Funcionalidad ir hacia atrás

Para añadir la función de ir hacia atrás y aparezca la flechita en la barra de herrramientas de la app (Toolbar) se debe habilitar con la función setDisplayHomeAsUpEnabled()

import kotlinx.android.synthetic.main.activity_main.*
...
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)

Interceptar la pulsación del botón atrás

Para interceptar la pulsación del botón atrás desde la toolbar de la aplicación se hace en el evento onOptionsItemSelected

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return when (item.itemId) {
        android.R.id.home -> {
            onBackPressed()
            return true
        }
    }
}

Personalización

Modificar el icono

Se puede personalizar el botón ir hacia atrás de la barra de herramientas, una de ellas es cambiar el icono, se realiza con la función

setSupportActionBar(toolbar)
toolbar.setNavigationIcon(R.drawable.ic_close_24dp)

Para que sea compatible con el modo oscuro el icono se debe modificar para que adopte el color del control normal

<vector
    android:tint="?attr/colorControlNormal">

Añadir funcionalidad pulsar 2 veces para salir

A veces es necesario implementar dos pasos para salir de la app, el famoso Press again to exit, para ello debemos obtener cuando se realizo la acción ir hacia atrás y si en un determinado tiempo se vuelve a producir que procede a salir de la app o bien mostrar el mensaje de que es necesario pulsar otra vez para salir

class MainActivity : AppCompatActivity() {

    var lastClickTime = 0L

...
override fun onBackPressed() {
    if (lastClickTime.plus(2000L) > System.currentTimeMillis()) {
        super.onBackPressed()
    } else {
        Toast.makeText(this, getText(R.string.press_again_exit), Toast.LENGTH_SHORT).show()
        lastClickTime = System.currentTimeMillis()
    }
}
Anuncio publicitario

Publicado por Codelaby

Mobile DevDesigner

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: