Search code examples
androidandroid-snackbarsnackbar

Snackbar - Cannot set margin in snackbar


Snackbar margins are not working at all. I'm trying to set margins in all the 4 sides of the snackbar layout.

Coordinator Layout:

CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) snackbarLayout.getLayoutParams();
layoutParams.setMargins(layoutParams.leftMargin + 20,layoutParams.topMargin + 20,layoutParams.rightMargin + 20,layoutParams.bottomMargin + 20);
snackbarLayout.setLayoutParams(layoutParams);

Frame Layout:

FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) snackbarLayout.getChildAt(0).getLayoutParams();
layoutParams.setMargins(layoutParams.leftMargin + 20,layoutParams.topMargin + 20,layoutParams.rightMargin + 20,layoutParams.bottomMargin + 20);
snackbarLayout.getChildAt(0).setLayoutParams(layoutParams);

None of these methods are working, I'm using AndroidX, and testing on AndroidQ.

import com.google.android.material.snackbar.Snackbar;

Note: Frame layout method setting internal margin (inside the layout), but I want it to set on the outside.


Solution

  • I found the solution, I used Theme.MaterialComponents.NoActionBar as my default theme and It worked!

    <style name="AppTheme" parent="Theme.MaterialComponents.NoActionBar">