部分底部功能表

您可以部分顯示底部功能表,然後讓使用者全螢幕顯示或關閉。

如要這麼做,請將 ModalBottomSheet 傳遞至 SheetState 的執行個體,並將 skipPartiallyExpanded 設為 false

範例

這個範例說明如何使用 ModalBottomSheetsheetState 屬性,一開始只顯示部分工作表:

@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 可控制應用程式是否顯示底部功能表。
  • sheetStateSheetState 的執行個體,其中 skipPartiallyExpanded 為 false。
  • ModalBottomSheet 會採用修飾符,確保完全展開時填滿畫面。
  • ModalBottomSheet 會將 sheetState 做為 sheetState 參數的值。
    • 因此,首次開啟時,工作表只會顯示部分內容。使用者可以拖曳或滑動,讓影片全螢幕播放或關閉影片。
  • onDismissRequest lambda 會控管使用者嘗試關閉底部功能表時發生的情況。在本例中,系統只會移除工作表。

結果

使用者第一次按下按鈕時,系統會顯示部分頁面:

一開始只會填滿部分畫面的底部功能表。使用者可以滑動填滿螢幕,或關閉該視窗
圖 1. 部分顯示的底部功能表。

如果使用者在功能表上向上滑動,功能表就會填滿畫面:

使用者展開至全螢幕大小的底部功能表。
圖 2. 全螢幕底部功能表。

其他資源