如何打开在Kotlin中完全展开的BottomSheetDialogFragment?

SQL*_*Lol 3 android kotlin bottom-sheet

我可以使用打开我的BottomSheetDialogFragment

val bottomSheet = BottomSheetFragment()
bottomSheet.show(fragmentManager!!, "BottomSheet")
Run Code Online (Sandbox Code Playgroud)

但它只打开以显示其内容的一半-我希望它在打开时可以扩展到屏幕的整个高度,而无需向上拖动。

我环顾四周,似乎一种方法是将BottomSheetBehavior状态设置为STATE_EXPANDED,但是我无法在Kotlin中找到解决方法。

任何帮助,将不胜感激!

Dam*_*ker 7

您可以设置BottomSheetBehavior通过将该内部状态 onViewCreated你的BottomSheetDialogFragment

dialog.setOnShowListener { dialog ->
    val d = dialog as BottomSheetDialog
    val bottomSheet = d.findViewById<View>(R.id.design_bottom_sheet) as FrameLayout
    val bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet)
    bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
}
Run Code Online (Sandbox Code Playgroud)

您可能还希望将“窥视高度”设置为对话框的高度,以防止在尝试关闭对话框时将其卡住。

bottomSheetBehavior.peekHeight = bottomSheet.height
Run Code Online (Sandbox Code Playgroud)

  • 完美,谢谢!当我使用Androidx时,只需将findViewbyId参数更改为com.google.android.material.R.id.design_bottom_sheet (2认同)