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);



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow