Die Android Design Support Library enthält jetzt Unterstützung für Snackbar.
Ich habe den folgenden Code verwendet, um einen zu erstellen:
Snackbar.make(findViewById(R.id.root_layout), result, Snackbar.LENGTH_LONG)
.setAction("Dismiss", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
Die Snackbar kann durch Wischen entlassen werden. Ich möchte es jedoch auch mit seiner eigenen Aktionsschaltfläche (erstellt mit der Funktion setAction) schließen.
Es scheint jedoch keine Funktion verfügbar zu sein, die dies tun kann.
Snackbar
gegen die Google Material Design Guidelines .Antworten:
Für Java
Die
.make
Methode gibt einSnackbar
Objekt zurück. Speichern Sie eine Instanz dieses Objekts, indem Sie es erstellenfinal
. Dann in dieonClick()
rufen.dismiss
:Für Kotlin
quelle
OnClickListener
isnull
Implementieren Sie eine Klickaktion und lassen Sie sie leer. Wenn Sie auf eine leere Klickaktion klicken, wird die Snackbar geschlossen.
quelle
null
als Listener übergehen , ohne eine tatsächliche Instanz erstellen zu müssenWenn Sie verwenden
Snackbar.LENGTH_LONG
, benötigen Sie keine Aktionsschaltfläche zum Entlassen, nach dem zweiten automatisch entlassen. Sie sollten diesen Code verwenden:Seien Sie vorsichtig in dieser Zeile :
quelle
Dies ist eine alte Frage, aber ich möchte nur meine eigenen Erfahrungen mit ähnlichen Funktionen in der Snackbar teilen. Wir haben also ein Design für unsere App, dass die Snackbar auf unbestimmte Zeit angezeigt werden soll und der Benutzer sie schließen kann. Es sollte jedoch keine Schaltfläche zum Ablehnen enthalten sein (Google empfiehlt ohnehin nicht, Aktionen in Snackbars zu schließen oder abzubrechen). Unsere Snackbar musste einfach durch Tippen entlassen werden.
Die einzige Lösung, die für uns funktioniert hat, war am Ende (ich verwende hier Retrolambda, aber es kann auch Standard View.OnClickListener verwendet werden):
Beachten Sie den Aufruf von getView () in der Mitte.
quelle
Die Snackbar (von 'com.android.support:design:23.2.1' ) unterstützt viele Arten von Entlassungsaktionen. Sie können einen einfachen Filter mithilfe eines Ereignisses erstellen , z. B. in diesem Beispiel:
Entlassungsarten von Snackbar:
PS Im Beispielcode verwendete Lambda-Ausdrücke (von RetroLambda)
quelle
Ich hatte das gleiche Problem. Als ich .dismiss () verwendete, sahen die Animationen anders aus und es gab zwei Probleme:
Beim Betrachten des ursprünglichen Android-Quellcodes für Snackbar habe ich die folgende Lösung gefunden:
Dann würde ich den .performClick auf dem SnackBarActionButton aufrufen
Link zum Android-Quellcode für Snackbar: https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/design/src/android/support/design/widget/Snackbar.java
quelle