¿Existe algún método para cambiar el diseño de un snackBar a una vista personalizada?
Ahora viene negro y podemos cambiar el color de fondo. ¿Pero no sé la forma correcta de inflar un nuevo diseño y convertirlo en un fondo de snackBars?
Gracias...
android
android-layout
android-custom-view
android-snackbar
snackbar
noobEinstien
fuente
fuente
Es posible a partir de la revisión 25.1.0 de la biblioteca de soporte de Android
I. Declare un diseño personalizado en su carpeta de valores / diseño.
Sugerencias:
@dimen/design_snackbar
valores para que coincidan con las pautas de diseño de materiales.?attr/colorAccent
para aplicar los cambios en el tema de la aplicación a Snackbar.II. Amplíe la clase BaseTransientBottomBar .
III. Agregar BaseTransientBottomBar.ContentViewCallback
IV. Agregue un método para crear Snackbar con diseño personalizado y métodos para llenarlo.
V. Crear instancia de
CustomSnackbar
y llamar alshow()
método.Vea más sobre Snackbar y su personalización en materialdoc.com
CustomSnackbar.class
Código completo :fuente
La forma XML:
El archivo xml de diseño original que se utiliza para el
Snackbar
es este archivo:design_layout_snackbar_include.xml
:Entonces, para anular este diseño , debe escribir su propio diseño con los mismos
android:id
s que en este y en surefs.xml
archivo debe agregar esta línea:fuente
BaseTransientBottomBar
, según stackoverflow.com/a/41154330/9636La respuesta es: no personalice la barra de aperitivos. No debe contener más elementos que un texto breve y una acción. Ver las pautas de diseño de materiales de Google .
ACTUALIZACIÓN: Si de todos modos desea personalizar la barra de aperitivos, esto es lo que he implementado en mi aplicación:
Nunca lo he intentado, pero al obtener la vista raíz de Snackbar, podría agregar nuevas vistas a Snackbar mediante programación.
fuente
En onCreate de la actividad:
fuente
¡Lo probé y funciona!
fuente
Prueba el siguiente código.
Nota:
fuente
Para agregar a la respuesta de Yakiv Mospan, para hacer su
BaseTransientBottomBar
presentación personalizada desde la parte inferior como aSnackbar
, copie este método de laSnackbar
clase para encontrar un padre adecuado para elBaseTransientBottomBar
constructor.fuente
Versión de Kotlin para la respuesta aceptada: https://stackoverflow.com/a/33441214/2437655
fuente
Puedes probar esta biblioteca. Este es un contenedor para la barra de aperitivos predeterminada de Android. https://github.com/ChathuraHettiarachchi/CSnackBar
o incluso puedes usar tu propia vista,
Actualmente, el único problema con el diseño personalizado es que necesitamos pasar la altura de la vista en dp como entrada
fuente