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