Recherche…


Syntaxe

  • Snackbar make (Vue de la vue, texte CharSequence, durée int)
  • Snackbar make (Voir la vue, int resId, int duration)

Paramètres

Paramètre La description
vue Affichage: vue permettant de rechercher un parent.
texte CharSequence: Le texte à afficher. Peut être du texte formaté.
resId int: Identifiant de la ressource de chaîne à utiliser. Peut être du texte formaté.
durée int: combien de temps pour afficher le message. Cela peut être LENGTH_SHORT, LENGTH_LONG ou LENGTH_INDEFINITE

Remarques

Snackbar fournit des commentaires légers sur une opération. Il affiche un bref message au bas de l'écran sur le mobile et en bas à gauche sur les plus gros appareils. Les snackbars apparaissent au dessus de tous les autres éléments à l'écran et un seul peut être affiché à la fois.

Ils disparaissent automatiquement après une temporisation ou après une interaction de l'utilisateur ailleurs sur l'écran, en particulier après des interactions qui invoquent une nouvelle surface ou une nouvelle activité. Snackbar peut être glissé hors de l'écran.

Avant d'utiliser SnackBar vous devez ajouter la dépendance de bibliothèque du support de conception dans le fichier build.gradle :

dependencies {
    compile 'com.android.support:design:25.3.1'
}

Documentation officielle

https://developer.android.com/reference/android/support/design/widget/Snackbar.html

Créer un Snackbar simple

La création d'une Snackbar peut se faire comme suit:

Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG).show();

La view est utilisée pour trouver un parent approprié à utiliser pour afficher la Snackbar . En général, ce serait un CoordinatorLayout que vous avez défini dans votre XML, ce qui permet d’ajouter des fonctionnalités telles que swipe pour ignorer et déplacer automatiquement d’autres widgets (par exemple FloatingActionButton ). S'il n'y a pas de CoordinatorLayout la vue du contenu du décor de fenêtre est utilisée.

Très souvent, nous ajoutons également une action au Snackbar . Un cas d'utilisation courant serait une action "Annuler".

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

Vous pouvez créer une Snackbar et l'afficher plus tard:

Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG); 
snackbar.show();

Si vous voulez changer la couleur du texte 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();

Par défaut, Snackbar rejette sur son coup droit.Cet exemple montre comment rejeter le snackBar sur son balayage à gauche .

Snack Bar Personnalisé

Fonction pour personnaliser le snack

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;

    }

Appelez la fonction à partir de fragment ou d'activité

 SnackBar.makeText(MyActivity.this, "Please Locate your address at Map", Snackbar.LENGTH_SHORT).show();

Snackbar avec rappel

Vous pouvez utiliser Snackbar.Callback pour écouter si le snack a été rejeté par l'utilisateur ou le délai d'attente.

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 personnalisé

Cet exemple montre une Snackbar blanche avec l'icône Annuler personnalisée.

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 Toasts: Lequel dois-je utiliser?

Les toasts sont généralement utilisés lorsque nous souhaitons afficher des informations sur l'utilisateur concernant une action qui a réussi (ou non) et que cette action ne nécessite aucune autre action de la part de l'utilisateur. Comme lorsqu'un message a été envoyé, par exemple:

Toast.makeText(this, "Message Sent!", Toast.LENGTH_SHORT).show();

Les snackbars sont également utilisés pour afficher une information. Mais cette fois, nous pouvons donner à l’utilisateur la possibilité de prendre des mesures. Par exemple, supposons que l’utilisateur ait supprimé une image par erreur et qu’il souhaite la récupérer. Nous pouvons fournir un Snackbar avec l'action "Annuler". Comme ça:

Snackbar.make(getCurrentFocus(), "Picture Deleted", Snackbar.LENGTH_SHORT)
        .setAction("Undo", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Return his picture
            }
        })
        .show();

Conclusion: Les toasts sont utilisés lorsque nous n'avons pas besoin d'interaction avec l'utilisateur. Les snackbars sont utilisés pour autoriser les utilisateurs à effectuer une autre action ou à annuler une précédente.

Snackbar personnalisé (vue inutile)

Créer une Snackbar sans la vue de passage nécessaire à Snackbar, toutes les mises en page créent dans Android dans 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();
    }
}

pour la classe d'appel

new CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), "message", CustomSnackBar.STATE_ERROR);



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow