bottomSheetDialogFragment full screen bottomSheetDialogFragment full screen android android

bottomSheetDialogFragment full screen


In your custom BottomSheetDialogFragment you can use something like:

  @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) {    Dialog dialog = super.onCreateDialog(savedInstanceState);    dialog.setOnShowListener(new DialogInterface.OnShowListener() {      @Override public void onShow(DialogInterface dialogInterface) {        BottomSheetDialog bottomSheetDialog = (BottomSheetDialog) dialogInterface;        setupFullHeight(bottomSheetDialog);      }    });    return  dialog;  }  private void setupFullHeight(BottomSheetDialog bottomSheetDialog) {    FrameLayout bottomSheet = (FrameLayout) bottomSheetDialog.findViewById(R.id.design_bottom_sheet);    BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);    ViewGroup.LayoutParams layoutParams = bottomSheet.getLayoutParams();    int windowHeight = getWindowHeight();    if (layoutParams != null) {      layoutParams.height = windowHeight;    }    bottomSheet.setLayoutParams(layoutParams);    behavior.setState(BottomSheetBehavior.STATE_EXPANDED);  }  private int getWindowHeight() {    // Calculate window height for fullscreen use    DisplayMetrics displayMetrics = new DisplayMetrics();    ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);    return displayMetrics.heightPixels;  }


Sorry for the late answer but in your custom BottomSheetDialogFragment you can set match_parent to layout params of bottom sheet view like this:

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {    val dialog = BottomSheetDialog(requireContext(), theme)    dialog.setOnShowListener {        val bottomSheetDialog = it as BottomSheetDialog        val parentLayout =            bottomSheetDialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet)        parentLayout?.let { it ->            val behaviour = BottomSheetBehavior.from(it)            setupFullHeight(it)            behaviour.state = BottomSheetBehavior.STATE_EXPANDED        }    }    return dialog}private fun setupFullHeight(bottomSheet: View) {    val layoutParams = bottomSheet.layoutParams    layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT    bottomSheet.layoutParams = layoutParams}

Setting height to match_parent helps your dialog to be drawn above the inset of Navigation bar


You can do it by setting peekHeight of BottomSheetBehavior to be equal to Resources.getSystem().getDisplayMetrics().heightPixels:

@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {    BottomSheetDialog bottomSheetDialog=(BottomSheetDialog)super.onCreateDialog(savedInstanceState);    bottomSheetDialog.setOnShowListener(dialog -> {        BottomSheetDialog dialogc = (BottomSheetDialog) dialog;        // When using AndroidX the resource can be found at com.google.android.material.R.id.design_bottom_sheet        FrameLayout bottomSheet =  dialogc.findViewById(android.support.design.R.id.design_bottom_sheet);        BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);        bottomSheetBehavior.setPeekHeight(Resources.getSystem().getDisplayMetrics().heightPixels);        bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);    });    return bottomSheetDialog;}