Snackbars sind Toasts die nicht einfach nur Text anzeigen, sondern auch gelayoutet werden können, und Interaktionen enthalten können.

Eine Snackbar ist ein FrameLayout

Wenn in der activity.xml bereits andere Layouts sind, sollten diese in ein CoordinatorLayout gepackt werden:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res-auto"
	android:id="@+id/coordinatorL"
	android:layout_width="match_parent"
	android:layout_height="match_parent">
	
	<androidx.constraintlayout.widget.ConstraintLayout
		android:layout_width="match_parent"
		android:layout_height="match_parent">
		<TextViewOrAnythingElse/>
	</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

Erzeugen und Anzeigen


Ausführlich:

CoordinatorLayout view = findViewById(R.id.myCoordinatorLayout);
int stringId = R.string.info_message; 
int duration = Snackbar.LENGTH_SHORT; 
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
mySnackbar.show();

Kurz:

Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.info_message,
	Snackbar.LENGTH_SHORT).show();

Snackbar mit Benutzerinteraktion


Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
	R.string.info_message, Snackbar.LENGTH_INDEFINITE);
 
//Auf Events Reagieren
mySnackbar.addCallback(
	new Snackbar.Callback() { 
		@Override 
		public void onShown(Snackbar sb) { 
			// Code der beim Anzeigen ausgeführt wird 
		} 
		@Override 
		public void onDismissed(Snackbar transientBottomBar, int event) { 
			// Code der beim Ausblenden angezeigt wird
		} 
	}
); 
 
//Buttons hinzufügen (Nur eine Action möglich, kann mit einem weiteren .setAction 
//überschrieben werden)
mySnackbar.setAction("Rückgängig", 
	new View.OnClickListener(){ 
		@Override 
		public void onClick(View v) { 
			//Hier steht der Code, der irgendetwas rückgängig macht. 
		} 
	}
); 
 
mySnackbar.show();

Der Parameter event kann folgende konstante Werte enthalten: Snackbar.Callback.DISMISS_EVENT_ACTION: Durch Aktion geschlossen Snackbar.Callback.DISMISS_EVENT_TIMEOUT: Automatisch abgelaufen
Snackbar.Callback.DISMISS_EVENT_SWIPE: Vom Benutzer weggeswiped Snackbar.Callback.DISMISS_EVENT_MANUAL: Manuell geschlossen Snackbar.Callback.DISMISS_EVENT_CONSECUTIVE: Von neuer Snackbar ersetzt