21

I search alot but couldn't find any solutionCan I display material design Snackbar in dialog? and Snackbar is not working within fragment class doesn't help. I pass rootView of fragment and also try passing a view from getActivity but none of them works!

   @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.content_dialog_bottom_sheet, container, false);

Snackbar.make(MyActivity.myTextview, "Hello", Snackbar.LENGTH_INDEFINITE).show();

Snackbar.make(rootView, "Hello", Snackbar.LENGTH_INDEFINITE).show();

return rootView;

}

and my content_dialog_bottom_sheet :

 <RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/bottomSheetLayout"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:background="@color/background"
   app:behavior_hideable="true"
   app:behavior_peekHeight="180dp"
   app:layout_behavior="@string/bottom_sheet_behavior">

  //some views 

</RelativeLayout>
Hamed Ghadirian
  • 5,881
  • 5
  • 43
  • 65

3 Answers3

41

Solution is fairly simple. You need to:

  1. Wrap your dialog layout with CoordinatorLayout (and if you want to show snackbar just next to some specific view, wrap it instead)
  2. Use CoordinatorLayout id as view while showing snackbar.
ror
  • 2,847
  • 1
  • 17
  • 25
12
Snackbar.make(
            getDialog().getWindow().getDecorView(),
            "your-string",
            Snackbar.LENGTH_SHORT
    ).show();

Add this peace of code to your onCreateView

Wimukthi Rajapaksha
  • 741
  • 1
  • 10
  • 19
2

Show snackbar after a delay:

   new Handler().postDelayed(new Runnable() {
  @Override
        public void run() {
            Snackbar.make(rootView, "Hello", Snackbar.LENGTH_INDEFINITE).show();

        }
    },200);
Sonam Gupta
  • 341
  • 1
  • 12