如何禁用BottomSheetDialogFragment在外部触摸时被解雇

时间:2019-06-14 06:07:21

标签: android android-layout

单击按钮时,屏幕上会显示一个BottomSheetDialogFragment,但是当我在窗口上触摸外部时,它会被关闭。

有没有办法像使用api setCanceledOnTouchOutside进行对话框一样禁用它。我尝试在我的课程的setCanceledOnTouchOutside = false方法中使用onCreateDialog设置(扩展了BottomSheetDialogFragment),但没有成功。

3 个答案:

答案 0 :(得分:0)

我建议在setCancelable中将其设置为false,它将为您服务

BottomSheetDialogFragment btmSheetDialog = new BottomSheetDialogFragment();
btmSheetDialog.setCancelable(false);
btmSheetDialog.show(getChildFragmentManager(), btmSheetDialog.getTag());

答案 1 :(得分:0)

您必须像下面这样

val bottomSheetDialogFragment = BottomSheetDialogFragment()
        bottomSheetDialogFragment.isCancelable = false
        bottomSheetDialogFragment.show(supportFragmentManager, bottomSheetDialogFragment.tag)

答案 2 :(得分:0)

基于DialogFragment文档

https://developer.android.com/reference/android/support/v4/app/DialogFragment.html#setCancelable(boolean)

控制显示的对话框是否可取消。使用它而不是直接调用Dialog.setCancelable(boolean),因为DialogFragment需要基于此更改其行为。

Params:
cancelable – If true, the dialog is cancelable. The default is true.

您可以尝试以下方法:

在科特林

   val switchAccountBottomSheet = SwitchAccountBottomSheet()
   switchAccountBottomSheet.isCancelable = false
   switchAccountBottomSheet.show(getActivity().getSupportFragmentManager(), SwitchAccountBottomSheet.class.getName());

在Java中

SwitchAccountBottomSheet mSwitchAccountBottomSheet = new SwitchAccountBottomSheet();
mSwitchAccountBottomSheet.setCancelable(false);
mSwitchAccountBottomSheet.show(getActivity().getSupportFragmentManager(), SwitchAccountBottomSheet.class.getName());