Android
Snackbar
Buscar..
Sintaxis
- Snackbar make (Vista, texto CharSequence, duración int)
- Snackbar make (Vista, int int., Int int)
Parámetros
Parámetro | Descripción |
---|---|
ver | Vista: La vista para encontrar un padre de. |
texto | CharSequence: El texto a mostrar. Se puede formatear texto. |
resuelto | int: el ID de recurso del recurso de cadena a usar. Se puede formatear texto. |
duración | int: cuánto tiempo se muestra el mensaje. Esto puede ser LENGTH_SHORT, LENGTH_LONG o LENGTH_INDEFINITE |
Observaciones
Snackbar proporciona comentarios ligeros sobre una operación. Muestra un breve mensaje en la parte inferior de la pantalla en el dispositivo móvil y en la parte inferior izquierda en dispositivos más grandes. Los Snackbars aparecen sobre todos los demás elementos en la pantalla y solo se puede mostrar uno a la vez.
Desaparecen automáticamente después de un tiempo de espera o después de la interacción del usuario en otra parte de la pantalla, especialmente después de las interacciones que convocan una nueva superficie o actividad. Snackbar se puede deslizar fuera de la pantalla.
Antes de usar SnackBar
, debe agregar la dependencia de la biblioteca de soporte de diseño en el archivo build.gradle
:
dependencies {
compile 'com.android.support:design:25.3.1'
}
Documentacion oficial
https://developer.android.com/reference/android/support/design/widget/Snackbar.html
Creando un Snackbar simple
La creación de un Snackbar
se puede hacer de la siguiente manera:
Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG).show();
La view
se utiliza para encontrar un padre adecuado para mostrar el Snackbar
. Por lo general, este sería un CoordinatorLayout
que ha definido en su XML, que permite agregar funcionalidades como deslizar para descartar y mover automáticamente otros widgets (por ejemplo, FloatingActionButton
). Si no hay CoordinatorLayout
, se utiliza la vista de contenido de la decoración de la ventana.
Muy a menudo también agregamos una acción al Snackbar
. Un caso de uso común sería una acción "Deshacer".
Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG)
.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View view) {
// put your logic here
}
})
.show();
Puedes crear un Snackbar
y mostrarlo más tarde:
Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG);
snackbar.show();
Si quieres cambiar el color del texto de la Snackbar
:
Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG);
View view = snackbar .getView();
TextView textView = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.parseColor("#FF4500"));
snackbar.show();
De forma predeterminada, Snackbar
despide con el golpe derecho. Este ejemplo muestra cómo descartar la barra de bocadillos con el golpe hacia la izquierda .
Snack Bar personalizado
Función para personalizar snackbar
public static Snackbar makeText(Context context, String message, int duration) {
Activity activity = (Activity) context;
View layout;
Snackbar snackbar = Snackbar
.make(activity.findViewById(android.R.id.content), message, duration);
layout = snackbar.getView();
//setting background color
layout.setBackgroundColor(context.getResources().getColor(R.color.orange));
android.widget.TextView text = (android.widget.TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
//setting font color
text.setTextColor(context.getResources().getColor(R.color.white));
Typeface font = null;
//Setting font
font = Typeface.createFromAsset(context.getAssets(), "DroidSansFallbackanmol256.ttf");
text.setTypeface(font);
return snackbar;
}
Llama a la función desde un fragmento o actividad.
SnackBar.makeText(MyActivity.this, "Please Locate your address at Map", Snackbar.LENGTH_SHORT).show();
Snackbar con devolución de llamada
Puede usar Snackbar.Callback para escuchar si la barra de aperitivos fue descartada por el usuario o el tiempo de espera.
Snackbar.make(getView(), "Hi snackbar!", Snackbar.LENGTH_LONG).setCallback( new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
switch(event) {
case Snackbar.Callback.DISMISS_EVENT_ACTION:
Toast.makeText(getActivity(), "Clicked the action", Toast.LENGTH_LONG).show();
break;
case Snackbar.Callback.DISMISS_EVENT_TIMEOUT:
Toast.makeText(getActivity(), "Time out", Toast.LENGTH_LONG).show();
break;
}
}
@Override
public void onShown(Snackbar snackbar) {
Toast.makeText(getActivity(), "This is my annoying step-brother", Toast.LENGTH_LONG).show();
}
}).setAction("Go!", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
Snackbar personalizado
Este ejemplo muestra un Snackbar blanco con un icono personalizado de Deshacer.
Snackbar customBar = Snackbar.make(view , "Text to be displayed", Snackbar.LENGTH_LONG);
customBar.setAction("UNDO", new View.OnClickListener() {
@Override
public void onClick(View view) {
//Put the logic for undo button here
}
});
View sbView = customBar.getView();
//Changing background to White
sbView.setBackgroundColor(Color.WHITE));
TextView snackText = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
if (snackText!=null) {
//Changing text color to Black
snackText.setTextColor(Color.BLACK);
}
TextView actionText = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_action);
if (actionText!=null) {
// Setting custom Undo icon
actionText.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.custom_undo, 0, 0, 0);
}
customBar.show();
Snackbar vs Tostadas: ¿Cuál debo usar?
Los brindis se utilizan generalmente cuando queremos mostrar información al usuario sobre alguna acción que haya sucedido (o no) con éxito y esta acción no requiere que el usuario realice ninguna otra acción. Como cuando un mensaje ha sido enviado, por ejemplo:
Toast.makeText(this, "Message Sent!", Toast.LENGTH_SHORT).show();
Snackbars también se utilizan para mostrar una información. Pero esta vez, podemos darle al usuario la oportunidad de tomar una acción. Por ejemplo, digamos que el usuario eliminó una imagen por error y quiere recuperarla. Podemos proporcionar un Snackbar con la acción "Deshacer". Me gusta esto:
Snackbar.make(getCurrentFocus(), "Picture Deleted", Snackbar.LENGTH_SHORT)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View view) {
//Return his picture
}
})
.show();
Conclusión: los brindis se usan cuando no necesitamos la interacción del usuario. Snackbars se utilizan para permitir a los usuarios realizar otra acción o deshacer una acción anterior.
Snackbar personalizado (no hay necesidad de ver)
Creando un Snackbar sin la necesidad de la vista de pase a Snackbar, todo el diseño creado en Android en android.R.id.content.
public class CustomSnackBar {
public static final int STATE_ERROR = 0;
public static final int STATE_WARNING = 1;
public static final int STATE_SUCCESS = 2;
public static final int VIEW_PARENT = android.R.id.content;
public CustomSnackBar(View view, String message, int actionType) {
super();
Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG);
View sbView = snackbar.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.parseColor("#ffffff"));
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
textView.setGravity(View.TEXT_ALIGNMENT_CENTER);
textView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
switch (actionType) {
case STATE_ERROR:
snackbar.getView().setBackgroundColor(Color.parseColor("#F12B2B"));
break;
case STATE_WARNING:
snackbar.getView().setBackgroundColor(Color.parseColor("#000000"));
break;
case STATE_SUCCESS:
snackbar.getView().setBackgroundColor(Color.parseColor("#7ED321"));
break;
}
snackbar.show();
}
}
para la clase de llamada
nuevo CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), "mensaje", CustomSnackBar.STATE_ERROR);