룬아님의 취중코딩

BottomSheetDialogFragment full screen 으로 show 하는 방법 본문

개발/안드로이드 개발

BottomSheetDialogFragment full screen 으로 show 하는 방법

룬아님 2020. 1. 16. 17:45

botBottomSheetDialogFragment를 show하면 fragment가 하단 30%정도로 올라오고 드래그해서 full screen 상태로 만들 수 있다.
하지만 show하는 동시에 fullscreen이 되도록 하는 상황이 필요할 수도 있다.

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    val bottomSheetDialog = BottomSheetDialog(requireContext(), theme)
    bottomSheetDialog.setOnShowListener { dialog ->
        val bottomSheet =
            (dialog as BottomSheetDialog).findViewById<FrameLayout>(com.google.android.material.R.id.design_bottom_sheet)
        BottomSheetBehavior.from(bottomSheet).state = BottomSheetBehavior.STATE_EXPANDED
        BottomSheetBehavior.from(bottomSheet).skipCollapsed = true
        BottomSheetBehavior.from(bottomSheet).isHideable = true
    }
    return bottomSheetDialog
}

그때 onCreateDialog를 override하고 바텀 시트 state를 STATE_EXPANDED로 변경한다.
state에 의해서 바텀시트의 화면 점유 정도가 바뀌기 때문에 STATE_EXPANDED에 의해 드래그 해서 확장된 상태로 바로 보여진다.

또한 밑의 skipCollapsed를 true로 변경하면 아래쪽으로 드래그하여 프래그먼트를 종료할 때 접히는 구간을 스킵하고 바로 닫힌다.
다만 천천히 접히는 구간까지 내렸을 때 스킵하지 못하는 문제가 있다.

 

https://medium.com/@guneetgstar/bottomsheetdialogfragment-made-simpler-b32fa8e20928

 

BottomSheetDialogFragment Made Simpler

If this is the first time you are using BottomSheet in your android app then this the best place to get started.

medium.com

 

반응형
Comments