It is possible to set the location that the Snackbar is displayed by positioning a android.support.design.widget.CoordinatorLayout
within your existing Activity layout.
For example, say your existing layout is a RelativeLayout
you could add a CoordinatorLayout
as follows:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/myCoordinatorLayout"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
</android.support.design.widget.CoordinatorLayout>
Then, make sure you pass the CoordinatorLayout
as the first argument of the Snackbar.make()
command.
final View viewPos = findViewById(R.id.myCoordinatorLayout);
Snackbar.make(viewPos, R.string.snackbar_text, Snackbar.LENGTH_LONG)
.setAction(R.string.snackbar_action_undo, showListener)
.show();
This will result in the Snackbar being shown at the bottom of the CoordinatorLayout
provided to the make() function.
If you pass a View
that is not a CoordinatorLayout
the Snackbar will walk up the tree until it finds a CoordinatorLayout
or the root of the layout.