Android
Imbissbude
Suche…
Syntax
- Snackbar machen (View-Ansicht, CharSequence-Text, int duration)
- Snackbar machen (View view, int resId, int duration)
Parameter
Parameter | Beschreibung |
---|---|
Aussicht | Ansicht: Die Ansicht, aus der ein übergeordnetes Element gesucht wird. |
Text | CharSequence: Der anzuzeigende Text. Kann formatierter Text sein. |
resId | int: Die Ressourcen-ID der zu verwendenden String-Ressource. Kann formatierter Text sein. |
Dauer | int: Wie lange wird die Nachricht angezeigt? Dies können LENGTH_SHORT, LENGTH_LONG oder LENGTH_INDEFINITE sein |
Bemerkungen
Die Snackbar bietet leichtes Feedback zu einer Operation. Bei Mobilgeräten erscheint unten auf dem Bildschirm eine kurze Meldung und bei größeren Geräten unten links. Snackbars erscheinen über allen anderen Elementen auf dem Bildschirm und es kann jeweils nur eine angezeigt werden.
Sie verschwinden automatisch nach einem Timeout oder nach Benutzerinteraktion an anderen Stellen auf dem Bildschirm, insbesondere nach Interaktionen, die eine neue Oberfläche oder Aktivität aufrufen. Snackbar kann vom Bildschirm gezogen werden.
Bevor Sie SnackBar
, müssen Sie die Abhängigkeit der Design-Unterstützungsbibliothek in der Datei build.gradle
:
dependencies {
compile 'com.android.support:design:25.3.1'
}
Offizielle Dokumentation
https://developer.android.com/reference/android/support/design/widget/Snackbar.html
Eine einfache Snackbar erstellen
Das Erstellen einer Snackbar
kann wie folgt durchgeführt werden:
Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG).show();
Die view
wird verwendet, um ein geeignetes übergeordnetes Snackbar
zum Anzeigen der Snackbar
. In der Regel handelt es sich hierbei um ein CoordinatorLayout
, das Sie in Ihrem XML-Objekt definiert haben. Dadurch können Sie Funktionen hinzufügen, beispielsweise Streichen, um andere Widgets (z. B. FloatingActionButton
) zu schließen und automatisch zu verschieben. Wenn kein CoordinatorLayout
ist, wird die Inhaltsansicht des Fensterdekors verwendet.
Sehr oft fügen wir der Snackbar
auch eine Aktion hinzu. Ein häufiger Anwendungsfall wäre eine Aktion "Rückgängig machen".
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();
Sie können eine Snackbar
erstellen und später Snackbar
:
Snackbar snackbar = Snackbar.make(view, "Text to display", Snackbar.LENGTH_LONG);
snackbar.show();
Wenn Sie die Farbe des Snackbar
-Texts ändern möchten:
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();
Standardmäßig verwirft Snackbar
den rechten Swipe . Dieses Beispiel zeigt, wie die snackBar auf dem linken Swipe verworfen wird .
Benutzerdefinierte Snackbar
Funktion zum Anpassen der 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;
}
Rufen Sie die Funktion aus Fragment oder Aktivität auf
SnackBar.makeText(MyActivity.this, "Please Locate your address at Map", Snackbar.LENGTH_SHORT).show();
Snackbar mit Rückruf
Sie können Snackbar verwenden. Rückruf, um zu hören, ob die Snackbar vom Benutzer oder vom Timeout abgelehnt wurde.
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();
Benutzerdefinierte Snackbar
Dieses Beispiel zeigt eine weiße Snackbar mit einem benutzerdefinierten Rückgängig-Symbol.
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: Welches sollte ich verwenden?
Toasts werden im Allgemeinen verwendet, wenn wir dem Benutzer Informationen zu einer erfolgreich (oder nicht erfolgreich) erfolgten Aktion anzeigen möchten. Bei dieser Aktion muss der Benutzer keine weiteren Aktionen ausführen. Zum Beispiel, wenn eine Nachricht gesendet wurde:
Toast.makeText(this, "Message Sent!", Toast.LENGTH_SHORT).show();
Snackbars dienen auch zur Anzeige von Informationen. Diesmal können wir dem Benutzer jedoch die Möglichkeit geben, Maßnahmen zu ergreifen. Angenommen, der Benutzer hat ein Bild aus Versehen gelöscht und möchte es zurückbekommen. Wir können eine Snackbar mit der Aktion "Rückgängig machen" bereitstellen. So was:
Snackbar.make(getCurrentFocus(), "Picture Deleted", Snackbar.LENGTH_SHORT)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View view) {
//Return his picture
}
})
.show();
Fazit: Toasts werden verwendet, wenn keine Benutzerinteraktion erforderlich ist. Snackbars ermöglichen Benutzern, eine andere Aktion auszuführen oder eine vorherige Aktion rückgängig zu machen.
Benutzerdefinierte Snackbar (keine Notwendigkeit)
Erstellen einer Snackbar, ohne dass die Ansicht auf Snackbar geändert werden muss. Alle Layouts werden in android in Android.R.id.content erstellt.
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 Anrufklasse
new CustomSnackBar (findViewById (CustomSnackBar.VIEW_PARENT), "message", CustomSnackBar.STATE_ERROR);