เปลี่ยน

คอมโพเนนต์ Switch ช่วยให้ผู้ใช้สลับระหว่าง 2 สถานะ ได้แก่ เลือกแล้ว และไม่ได้เลือก ในแอป คุณอาจใช้สวิตช์เพื่อให้ผู้ใช้ทำอย่างใดอย่างหนึ่งต่อไปนี้

  • เปิดหรือปิดการตั้งค่า
  • เปิดหรือปิดใช้ฟีเจอร์
  • เลือกตัวเลือก

โดยคอมโพเนนต์นี้มี 2 ส่วน ได้แก่ นิ้วโป้งและแทร็ก ปุ่มสลับคือส่วนที่ลากได้ ของสวิตช์ และแทร็กคือพื้นหลัง ผู้ใช้สามารถลากนิ้ว ไปทางซ้ายหรือขวาเพื่อเปลี่ยนสถานะของสวิตช์ นอกจากนี้ยังแตะ สวิตช์เพื่อตรวจสอบและล้างได้ด้วย

ตัวอย่างคอมโพเนนต์สวิตช์ในทั้งโหมดสว่างและโหมดมืด
รูปที่ 1 คอมโพเนนต์สวิตช์

การติดตั้งใช้งานขั้นพื้นฐาน

ดูคำจำกัดความ API ทั้งหมดได้ที่ข้อมูลอ้างอิง Switch ต่อไปนี้คือ พารามิเตอร์หลักบางส่วนที่คุณอาจต้องใช้

  • checked: สถานะเริ่มต้นของสวิตช์
  • onCheckedChange: การเรียกกลับที่จะเรียกใช้เมื่อสถานะของสวิตช์มีการเปลี่ยนแปลง
  • enabled: เปิดหรือปิดใช้สวิตช์
  • colors: สีที่ใช้สำหรับสวิตช์

ตัวอย่างต่อไปนี้เป็นการใช้งาน Switch composable แบบเรียบง่ายที่สุด

@Composable
fun SwitchMinimalExample() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        }
    )
}

การติดตั้งใช้งานนี้จะปรากฏดังนี้เมื่อไม่ได้เลือก

สวิตช์พื้นฐานที่ไม่ได้เลือก
รูปที่ 2 สวิตช์ที่ไม่ได้เลือก

ลักษณะที่ปรากฏเมื่อเลือกมีดังนี้

สวิตช์พื้นฐานที่เลือก
รูปที่ 3 สวิตช์ที่เลือก

การติดตั้งใช้งานขั้นสูง

พารามิเตอร์หลักที่คุณอาจต้องการใช้เมื่อใช้สวิตช์ขั้นสูงกว่า มีดังนี้

  • thumbContent: ใช้เพื่อปรับแต่งลักษณะที่ปรากฏของนิ้วโป้งเมื่อมีการเลือก
  • colors: ใช้เพื่อปรับแต่งสีของแทร็กและนิ้วโป้ง

ภาพปกที่ทำเอง

คุณส่ง Composable ใดก็ได้สำหรับพารามิเตอร์ thumbContent เพื่อสร้างภาพขนาดย่อที่กำหนดเอง ต่อไปนี้เป็นตัวอย่างสวิตช์ที่ใช้ไอคอนที่กำหนดเองสำหรับ ภาพขนาดย่อ

@Composable
fun SwitchWithIconExample() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        thumbContent = if (checked) {
            {
                Icon(
                    imageVector = Icons.Filled.Check,
                    contentDescription = null,
                    modifier = Modifier.size(SwitchDefaults.IconSize),
                )
            }
        } else {
            null
        }
    )
}

ในการติดตั้งใช้งานนี้ ลักษณะที่ไม่ได้เลือกจะเหมือนกับตัวอย่างใน ส่วนก่อนหน้า อย่างไรก็ตาม เมื่อเลือกแล้ว การใช้งานนี้จะปรากฏดังนี้

สวิตช์ที่ใช้พารามิเตอร์ thumbContent เพื่อแสดงไอคอนที่กำหนดเองเมื่อเลือก
รูปที่ 4 สวิตช์ที่มีไอคอนที่กำหนดเอง

สีที่กำหนดเอง

ตัวอย่างต่อไปนี้แสดงวิธีใช้พารามิเตอร์สีเพื่อ เปลี่ยนสีของปุ่มและแทร็กของสวิตช์ โดยพิจารณาว่า สวิตช์มีการเลือกหรือไม่

@Composable
fun SwitchWithCustomColors() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        colors = SwitchDefaults.colors(
            checkedThumbColor = MaterialTheme.colorScheme.primary,
            checkedTrackColor = MaterialTheme.colorScheme.primaryContainer,
            uncheckedThumbColor = MaterialTheme.colorScheme.secondary,
            uncheckedTrackColor = MaterialTheme.colorScheme.secondaryContainer,
        )
    )
}

การติดตั้งใช้งานนี้จะปรากฏดังนี้

สวิตช์ที่ใช้พารามิเตอร์สีเพื่อแสดงสวิตช์ที่มีสีที่กำหนดเองสำหรับทั้งหัวแม่มือและแทร็ก
รูปที่ 5 สวิตช์ที่มีสีที่กำหนดเอง

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