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

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