Я могу открыть свой BottomSheetDialogFragment с помощью
val bottomSheet = BottomSheetFragment()
bottomSheet.show(fragmentManager!!, "BottomSheet")
но он открывается только для отображения половины своего содержимого - я бы хотел, чтобы он расширялся при открытии на всю высоту экрана без необходимости перетаскивать его вверх.
Я осмотрелся, и кажется, что один из способов — установить состояние BottomSheetBehavior в STATE_EXPANDED, но я не смог найти решение, как это сделать в Kotlin.
Любая помощь будет оценена по достоинству!
Вы можете установить состояние 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
}
Вы также можете установить высоту просмотра на высоту вашего диалогового окна, чтобы предотвратить зависание диалогового окна на полпути при попытке закрыть его.
bottomSheetBehavior.peekHeight = bottomSheet.height
У меня работает, просто нужно было указать минимальную высоту файла макета диалога .xml, так как у меня не так много контента.
Работал как шарм, также @SQLol пришлось изменить его с «R.id.design_bottom_sheet» на «com.google.android.material.R.id.design_bottom_sheet», спасибо
не удалось показать нижний лист. bottomSheetDialogFragment.show(fragmentManager!!, "BottomSheet") показывает ошибку в этой строке
Проблема с настройкой bottomSheetBehavior.peekHeight = bottomSheet.height заключается в том, что когда вы проводите пальцем вниз, чтобы закрыть диалоговое окно фактически не закрывается, и на экране остается серое перекрытие.
Чтобы избежать серого перекрытия, вместо этого используйте bottomSheetBehavior.skipCollapsed = true.
Пожалуйста, обновите ответ. Предложение @JeanTadebois установить для BottomSheetBehavior.skipCollapsed значение true, чтобы предотвратить зависание диалогового окна на полпути, является лучшим/более чистым выбором.
Отлично спасибо! Просто пришлось изменить аргумент findViewbyId на com.google.android.material.R.id.design_bottom_sheet, поскольку я использую Androidx