Android
Snack bar
Zoeken…
Syntaxis
- Snackbar maken (weergave bekijken, CharSequence-tekst, int duur)
- Snackbar maken (weergave bekijken, int resId, int duur)
parameters
Parameter | Beschrijving |
---|---|
visie | Weergave: de weergave om een ouder te vinden. |
tekst | CharSequence: de te tonen tekst. Kan opgemaakte tekst zijn. |
RESID | int: het resource-ID van de stringbron die moet worden gebruikt. Kan opgemaakte tekst zijn. |
looptijd | int: hoe lang om het bericht weer te geven. Dit kan LENGTH_SHORT, LENGTH_LONG of LENGTH_INDEFINITE zijn |
Opmerkingen
Snackbar geeft lichtgewicht feedback over een operatie. Het toont een kort bericht onderaan het scherm op mobiel en links onderaan op grotere apparaten. Snackbars verschijnen boven alle andere elementen op het scherm en er kan er slechts één tegelijk worden weergegeven.
Ze verdwijnen automatisch na een time-out of na gebruikersinteractie elders op het scherm, vooral na interacties die een nieuw oppervlak of activiteit oproepen. Snackbar kan van het scherm worden geveegd.
Voordat u SnackBar
, moet u de afhankelijkheid van de bibliotheek voor ontwerpondersteuning toevoegen aan het bestand build.gradle
:
dependencies {
compile 'com.android.support:design:25.3.1'
}
Officiële documentatie
https://developer.android.com/reference/android/support/design/widget/Snackbar.html
Een eenvoudige snackbar maken
Het maken van een Snackbar
kan als volgt worden gedaan:
Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG).show();
De view
wordt gebruikt om een geschikte ouder te vinden om de Snackbar
weer te geven. Meestal is dit een CoordinatorLayout
die u in uw XML hebt gedefinieerd, waarmee u functies kunt toevoegen, zoals vegen om te negeren en automatisch verplaatsen van andere widgets (bijv. FloatingActionButton
). Als er geen CoordinatorLayout
wordt de inhoudsweergave van het vensterdecor gebruikt.
Heel vaak voegen we ook een actie toe aan de Snackbar
. Een veelvoorkomend geval zou een actie "Ongedaan maken" zijn.
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();
U kunt een Snackbar
en deze later tonen:
Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG);
snackbar.show();
Als u de kleur van de tekst van de Snackbar
wilt wijzigen:
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();
Standaard wordt Snackbar
bij de juiste veeg afgewezen. Dit voorbeeld laat zien hoe u de snackBar bij de linker veeg kunt verwijderen .
Aangepaste snackbar
Functie om snackbar aan te passen
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;
}
Roep de functie op vanuit fragment of activiteit
SnackBar.makeText(MyActivity.this, "Please Locate your address at Map", Snackbar.LENGTH_SHORT).show();
Snackbar met terugbelactie
U kunt Snackbar.Callback gebruiken om te luisteren of de snackbar is geweigerd door gebruiker of time-out.
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();
Aangepaste snackbar
Dit voorbeeld toont een witte snackbar met een aangepast pictogram Ongedaan maken.
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 versus Toast: welke moet ik gebruiken?
Toasts worden meestal gebruikt wanneer we informatie aan de gebruiker willen weergeven over een of andere actie die al dan niet met succes is gebeurd en deze actie vereist geen andere actie van de gebruiker. Zoals wanneer een bericht is verzonden, bijvoorbeeld:
Toast.makeText(this, "Message Sent!", Toast.LENGTH_SHORT).show();
Snackbars worden ook gebruikt om informatie weer te geven. Maar deze keer kunnen we de gebruiker de gelegenheid geven een actie te ondernemen. Laten we bijvoorbeeld zeggen dat de gebruiker per ongeluk een foto heeft verwijderd en deze terug wil krijgen. We kunnen een snackbar voorzien van de actie "Ongedaan maken". Soortgelijk:
Snackbar.make(getCurrentFocus(), "Picture Deleted", Snackbar.LENGTH_SHORT)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View view) {
//Return his picture
}
})
.show();
Conclusie: Toasts worden gebruikt wanneer we geen gebruikersinteractie nodig hebben. Snackbars worden gebruikt om gebruikers een andere actie te laten ondernemen of een vorige ongedaan te maken.
Aangepaste snackbar (geen weergave nodig)
Een snackbar maken zonder de passpass-weergave naar Snackbar te maken, alle lay-outs maken in android in 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();
}
}
voor oproepklasse
nieuwe CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), "message", CustomSnackBar.STATE_ERROR);