如何使BottomSheetDialogFragment非模态?

时间:2016-10-18 16:29:24

标签: android

在onCreateView()中,我尝试过设置一些属性,但DialogFragment在外面点击时仍然消失。

当用户与应用程序的其他部分进行交互时,我希望片段几乎保持不变。

这是一个扩展BottomSheetDialogFragment的类:

  @Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    ...

    // makes background non-interactive
    getDialog().getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

    // prevents dimming of background
    getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

    // no effect?
    getDialog().setCanceledOnTouchOutside(false);
    this.setCancelable(false);

    return view;
  }

1 个答案:

答案 0 :(得分:0)

代码如:

    public class MyDialogFragment extends DialogFragment {

        ...

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
            builder.setTitle(...)
                    .setMessage(...)
                    .setCancelable(false);

            ...

            Dialog dialog = builder.create();
            dialog.getWindow();
            return dialog;
        }

        ...

    }

适合我。