Частично развернутый нижний экран

Вы можете частично показать нижний лист, а затем позволить пользователю развернуть его на весь экран или закрыть.

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

Результаты

Когда пользователь впервые нажимает на кнопку, лист отображается частично:

Нижний лист, который изначально занимает только часть экрана. Пользователь может провести пальцем по экрану, чтобы развернуть рекламу на весь экран, или закрыть ее.
Рисунок 1. Частично показанный нижний экран.

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

Нижний экран, который пользователь развернул на весь экран.
Рисунок 2. Полноэкранный нижний лист.

Дополнительные ресурсы