Android
Snackbar
Sök…
Syntax
- Snackbar make (View view, CharSequence text, int Duration)
- Snackbar make (View view, int resId, int Duration)
parametrar
Parameter | Beskrivning |
---|---|
se | Visa: Vyn att hitta en förälder från. |
text | CharSequence: Texten som ska visas. Kan formateras text. |
Resid | int: Resurs-ID för strängaresursen som ska användas. Kan formateras text. |
varaktighet | int: Hur lång tid att visa meddelandet. Det här kan vara LENGTH_SHORT, LENGTH_LONG eller LENGTH_INDEFINITE |
Anmärkningar
Snackbar ger lätt feedback om en operation. Det visar ett kort meddelande längst ner på skärmen på mobil och längst ner till vänster på större enheter. Snackbars visas ovanför alla andra element på skärmen och endast en kan visas i taget.
De försvinner automatiskt efter en timeout eller efter användarinteraktion någon annanstans på skärmen, särskilt efter interaktioner som kallar en ny yta eller aktivitet. Snackbar kan dras av skärmen.
Innan du använder SnackBar
måste du lägga till konstruktionsstödbibliotekets beroende i filen build.gradle
:
dependencies {
compile 'com.android.support:design:25.3.1'
}
Officiell dokumentation
https://developer.android.com/reference/android/support/design/widget/Snackbar.html
Skapa en enkel snackbar
Skapa en Snackbar
kan göras enligt följande:
Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG).show();
view
används för att hitta en lämplig förälder som ska användas för att visa Snackbar
. Vanligtvis skulle detta vara en CoordinatorLayout
som du har definierat i din XML, som gör det möjligt att lägga till funktionalitet som svep för att avvisa och automatiskt flytta andra widgetar (t.ex. FloatingActionButton
). Om det inte finns någon CoordinatorLayout
fönsterdekorets innehållsvy.
Mycket ofta lägger vi också till en åtgärd i Snackbar
. Ett vanligt fall skulle vara en "Ångra" -åtgärd.
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();
Du kan skapa en Snackbar
och visa den senare:
Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG);
snackbar.show();
Om du vill ändra färgen på Snackbar
text:
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();
Som standard avvisar Snackbar
på höger svep. Det här exemplet visar hur du avfärdar snackBar på vänster svep .
Anpassad snackbar
Funktion för att anpassa 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;
}
Ring funktionen från fragment eller aktivitet
SnackBar.makeText(MyActivity.this, "Please Locate your address at Map", Snackbar.LENGTH_SHORT).show();
Snackbar med återuppringning
Du kan använda Snackbar.Callback för att lyssna om snackbaren avvisades av användare eller timeout.
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();
Anpassad mellanmål
Det här exemplet visar en vit mellanmålstang med anpassad Ångra-ikon.
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: Vilken ska jag använda?
Rostat bröd används vanligtvis när vi vill visa en information till användaren om någon åtgärd som framgångsrikt har (eller inte) hänt och den här åtgärden kräver inte att användaren vidtar någon annan åtgärd. Som när ett meddelande har skickats, till exempel:
Toast.makeText(this, "Message Sent!", Toast.LENGTH_SHORT).show();
Snackbars används också för att visa information. Men den här gången kan vi ge användaren en möjlighet att vidta åtgärder. Låt oss till exempel säga att användaren raderade en bild av misstag och att han vill få tillbaka den. Vi kan tillhandahålla en mellanmål med åtgärden "Ångra". Så här:
Snackbar.make(getCurrentFocus(), "Picture Deleted", Snackbar.LENGTH_SHORT)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View view) {
//Return his picture
}
})
.show();
Slutsats: Rostat bröd används när vi inte behöver användarinteraktion. Snackbars används för att tillåta användare att vidta en annan åtgärd eller ångra en tidigare.
Anpassad snackbar (visning utan behov)
Skapa en snackbar utan behovsöversikt till Snackbar, all layout skapas i android i 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();
}
}
för samtalskurs
ny CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), "meddelande", CustomSnackBar.STATE_ERROR);