Вы можете частично отобразить нижний лист , а затем позволить пользователю либо развернуть его на весь экран, либо закрыть.
Для этого передайте вашему ModalBottomSheet
экземпляр SheetState
с skipPartiallyExpanded
, установленным в false
.
Пример
В этом примере показано, как можно использовать sheetState
ModalBottomSheet
для отображения листа сначала только частично:
@Composable fun PartialBottomSheet() { var showBottomSheet by remember { mutableStateOf(false) } val sheetState = rememberModalBottomSheetState( skipPartiallyExpanded = false, ) Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, ) { Button( onClick = { showBottomSheet = true } ) { Text("Display partial bottom sheet") } if (showBottomSheet) { ModalBottomSheet( modifier = Modifier.fillMaxHeight(), sheetState = sheetState, onDismissRequest = { showBottomSheet = false } ) { Text( "Swipe up to open sheet. Swipe down to dismiss.", modifier = Modifier.padding(16.dp) ) } } } }
Ключевые моменты о коде
В этом примере обратите внимание на следующее:
-
showBottomSheet
контролирует, отображает ли приложение нижний лист. -
sheetState
— это экземплярSheetState
, гдеskipPartiallyExpanded
имеет значение false. -
ModalBottomSheet
принимает модификатор, который гарантирует, что он заполнит экран при полном раскрытии. -
ModalBottomSheet
принимаетsheetState
в качестве значения параметраsheetState
.- В результате лист отображается только частично при первом открытии. Затем пользователь может перетащить или провести его, чтобы развернуть его в полноэкранном режиме или закрыть.
- Лямбда-выражение
onDismissRequest
управляет тем, что происходит, когда пользователь пытается закрыть нижний лист. В этом случае удаляется только лист.
Результаты
Когда пользователь впервые нажимает кнопку, лист отображается частично:
Если пользователь проводит пальцем вверх по листу, он заполняет экран: