La biblioteca de soporte de diseño de Android ahora incluye soporte para Snackbar.
He usado el siguiente código para crear uno:
Snackbar.make(findViewById(R.id.root_layout), result, Snackbar.LENGTH_LONG)
.setAction("Dismiss", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
El snackbar se puede cerrar con solo deslizar el dedo. Sin embargo, también quiero descartarlo usando su propio Botón de Acción (creado usando la función setAction).
Sin embargo, no parece haber ninguna función disponible que pueda hacer eso.
Snackbar
está en contra de las Directrices de diseño de materiales de Google .Respuestas:
Para Java,
El
.make
método devuelve unSnackbar
objeto. Guarde una instancia de ese objeto haciéndolofinal
. Luego, en elonClick()
, llame a.dismiss
:Para Kotlin,
fuente
OnClickListener
esnull
Implemente una acción de clic y deje que se vacíe. Al hacer clic en la acción de clic vacía, se cerrará la barra de bocadillos.
fuente
null
por un oyente, no es necesario crear una instancia realCuando lo usa
Snackbar.LENGTH_LONG
, no necesita el botón de acción para descartar, después de un segundo descartar automáticamente. Debes usar este código:Tenga cuidado con esta línea :
fuente
Esta es una pregunta antigua, pero solo quiero compartir mi propia experiencia con una función similar en Snackbar. Así que obtuvimos un diseño para nuestra aplicación, esa barra de bocadillos debería mostrarse indefinidamente y el usuario debería poder descartarla ... pero no debería haber un botón DESCARTAR dentro de ella (Google no recomienda las acciones de Descartar o Cancelar dentro de las barras de bocadillos de todos modos). Nuestro snack bar tuvo que ser despedido con solo tocarlo.
La única solución, que funcionó para nosotros, fue al final (estoy usando retrolambda aquí, pero también se podría usar View.OnClickListener estándar):
Tenga en cuenta la llamada getView () en el medio.
fuente
Snackbar (de 'com.android.support:design:23.2.1' ) admite muchos tipos de acciones de descarte. Puede crear un filtro simple usando evento , como en este ejemplo:
Tipos de descarte de Snackbar:
PS En el código de muestra se utilizaron expresiones lambda (por RetroLambda)
fuente
Yo tuve el mismo problema. Cuando usé .dismiss (), las animaciones se veían diferentes y había dos problemas:
Buscando en el código fuente original de Android para Snackbar, encontré la siguiente solución:
Luego, llamaría a .performClick en snackBarActionButton
Enlace al código fuente de Android para Snackbar: https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/design/src/android/support/design/widget/Snackbar.java
fuente