如何在BottomSheetDialogFragment中显示SnackBar?

Ham*_*ian 5 android android-fragments android-snackbar bottom-sheet

我搜索了很多,但是找不到任何解决方案我可以在对话框中显示材料设计小吃栏吗?小吃吧是不是片段类中的工作没有帮助。我传递了片段的rootView,还尝试从getActivity传递视图,但是它们都不起作用!

   @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;

}
Run Code Online (Sandbox Code Playgroud)

和我的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>
Run Code Online (Sandbox Code Playgroud)

ror*_*ror 30

解决方案相当简单。你需要:

  1. 将您的对话框布局包裹起来CoordinatorLayout(如果您想在某个特定视图旁边显示小吃栏,请将其包裹起来)
  2. CoordinatorLayout显示小吃店时使用id 作为视图。

  • 谢谢。:)。花了2个小时才完成这项工作。:) (3认同)

Wim*_*sha 23

Snackbar.make(
            getDialog().getWindow().getDecorView(),
            "your-string",
            Snackbar.LENGTH_SHORT
    ).show();
Run Code Online (Sandbox Code Playgroud)

将这段代码添加到您的onCreateView中


Son*_*pta 2

延迟后显示小吃栏:

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

        }
    },200);
Run Code Online (Sandbox Code Playgroud)