How can you adjust Android SnackBar to a specific position on screen-ThrowExceptions

Exception or error:

Follwing the new android snackbar, i’m trying to set it to be positioned on a specific y coordinate. Its seems to be not even a possible.

I’ve tried with getting the parent of the snackbar’s view, but, there’s nothing to be done to the parent for it to set the position of it.


When digging into the actual class, there’s an instance of mView, and mParent which is private, and can’t be reached anyhow.

How to solve:

It is possible to set the location that the Snackbar is displayed by positioning a within your existing Activity layout.

For example, say your existing layout is a RelativeLayout you could add a CoordinatorLayout as follows:


Then, make sure you pass the CoordinatorLayout as the first argument of the Snackbar.make() command.

final View viewPos = findViewById(;    
Snackbar.make(viewPos, R.string.snackbar_text, Snackbar.LENGTH_LONG)
                            .setAction(R.string.snackbar_action_undo, showListener)

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.


Defining a layout explicitly for the Snackbar may not always be practical.

The issue seems to have been targeting the parent, rather than the Snackbar.

Snackbar snackbar = Snackbar.make(layout, message, duration);
View snackbarLayout = snackbar.getView();
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
// Layout must match parent layout type
lp.setMargins(50, 0, 0, 0);
// Margins relative to the parent view.
// This would be 50 from the top left.


In addition to brentm‘s answer, I had to use:


and add the dependency for it:

implementation "androidx.coordinatorlayout:coordinatorlayout:1.1.0"

Leave a Reply

Your email address will not be published. Required fields are marked *