Вы можете частично отобразить нижний лист , а затем позволить пользователю либо развернуть его на весь экран, либо закрыть.
Для этого передайте 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управляет действиями, которые пользователь совершает при попытке закрыть нижний лист. В данном случае она просто удаляет лист.
Результаты
Когда пользователь впервые нажимает кнопку, лист отображается частично:

Если пользователь проведет пальцем вверх по листу, он заполнит весь экран:
