android - 如何使 BottomSheetDialogFragment 非模态?

标签 android

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

当用户与应用程序的其他部分交互时,我希望 fragment 几乎始终保持不变。

这是在扩展 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;
  }

最佳答案

代码如:

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

        ...

    }

为我工作。

关于android - 如何使 BottomSheetDialogFragment 非模态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40113502/

相关文章:

android - 如何使 Android 4.0 应用程序向后兼容?

android - 房间找不到实现

java - Android InApp Purchase - 如何处理待定状态?

android - 如何使用水平滚动android显示图像

java - 如何在android中查找两个日期之间的日历事件

android - 无法使用空指针异常错误的 Butterknife

Android Webview 在三星和 Android 11 上崩溃

Android 2 模拟器通信

android - 如何更改 Activity 的标题?

java - 替代 dalvik.system.VMStack