Bottom Sheet บางส่วน

คุณสามารถแสดงชีตด้านล่างบางส่วน แล้วให้ผู้ใช้เลือกทำให้เป็นแบบเต็มหน้าจอหรือปิดชีต

โดยส่ง 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 เป็นเท็จ
  • ModalBottomSheet ใช้ตัวแก้ไขที่ช่วยให้มั่นใจว่าวิดเจ็ตจะแสดงเต็มหน้าจอ เมื่อขยายเต็มที่
  • ModalBottomSheet ใช้ sheetState เป็นค่าสำหรับพารามิเตอร์ sheetState
    • ด้วยเหตุนี้ ชีตจึงแสดงเพียงบางส่วนเมื่อเปิดเป็นครั้งแรก จากนั้นผู้ใช้จะลากหรือปัดเพื่อทำให้เป็นแบบเต็มหน้าจอหรือปิดก็ได้
  • onDismissRequest Lambda จะควบคุมสิ่งที่เกิดขึ้นเมื่อผู้ใช้พยายาม ปิดชีตด้านล่าง ในกรณีนี้ ระบบจะนำเฉพาะชีตออก

ผลลัพธ์

เมื่อผู้ใช้กดปุ่มเป็นครั้งแรก ชีตจะแสดงบางส่วนดังนี้

Bottom Sheet ที่ตอนแรกจะเติมเฉพาะบางส่วนของหน้าจอ ผู้ใช้สามารถปัดเพื่อแสดงภาพเต็มหน้าจอหรือปิดภาพได้
รูปที่ 1 Bottom Sheet ที่แสดงบางส่วน

หากผู้ใช้ปัดขึ้นในชีต ชีตจะเติมเต็มหน้าจอ

Bottom Sheet ที่ผู้ใช้ขยายให้เต็มหน้าจอ
รูปที่ 2 แผ่นด้านล่างแบบเต็มหน้าจอ

แหล่งข้อมูลเพิ่มเติม