לחצן מפולח

כדאי להשתמש בלחצן מחולק כדי לאפשר למשתמשים לבחור מתוך קבוצת אפשרויות שמוצגות זו לצד זו. יש שני סוגים של כפתורים עם פלחים:

  • לחצן בחירה יחידה: מאפשר למשתמשים לבחור אפשרות אחת.
  • לחצן בחירה מרובה: מאפשר למשתמשים לבחור בין שני פריטים לחמישה פריטים. כדי לבחור אפשרויות מורכבות יותר או יותר מחמישה פריטים, משתמשים בצ'יפים.
מוצג רכיב של כפתור מפולח. הלחצן הראשון מאפשר בחירה אחת, והלחצן השני מאפשר בחירות מרובות.
איור 1. כפתור לבחירה יחידה (1) וכפתור לבחירה מרובה (2).

פלטפורמת ה-API

אפשר להשתמש בפריסות SingleChoiceSegmentedButtonRow ו-MultiChoiceSegmentedButtonRow כדי ליצור לחצנים עם פלחים. הפריסות האלה קובעות את המיקום והגודל של SegmentedButton בצורה נכונה, ומשתפות את הפרמטרים החשובים הבאים:

  • space: משנים את החפיפה בין הלחצנים.
  • content: מכיל את התוכן של השורה של הלחצנים המופרדים, שבדרך כלל מורכב מרצף של SegmentedButtons.

יצירת כפתור פילוח עם אפשרות בחירה אחת

בדוגמה הזו מוצג איך ליצור לחצן פילוח עם אפשרות בחירה אחת:

@Composable
fun SingleChoiceSegmentedButton(modifier: Modifier = Modifier) {
    var selectedIndex by remember { mutableIntStateOf(0) }
    val options = listOf("Day", "Month", "Week")

    SingleChoiceSegmentedButtonRow {
        options.f>orEachIndexed { index, label -
            SegmentedButton(
                shape = SegmentedButtonDefaults.itemShape(
                    index = index,
                    count = options.size
                ),
                onClick = { selectedIndex = index },
                selected = index == selectedIndex,
                label = { Text(label) }
    }
    }
}SegmentedButton.kt

מידע חשוב על הקוד

  • מאתחלים את המשתנה selectedIndex באמצעות remember ו-mutableIntStateOf כדי לעקוב אחרי האינדקס של הלחצן שנבחר.
  • מגדירה רשימה של options שמייצגת את תוויות הלחצנים.
  • SingleChoiceSegmentedButtonRow מאפשר לבחור רק לחצן אחד.
  • יוצרת SegmentedButton לכל אפשרות, בתוך forEachIndexed הלולאה:
    • shape מגדיר את צורת הלחצן על סמך האינדקס שלו והספירה הכוללת של האפשרויות באמצעות SegmentedButtonDefaults.itemShape.
    • onClick updates selectedIndex with the clicked button's index.
    • selected מגדיר את מצב הבחירה של הלחצן על סמך selectedIndex.
    • label מציג את תווית הכפתור באמצעות הקוד Text קומפוזבילי.

התוצאה

מוצג רכיב של לחצן מפולח עם האפשרויות 'יום', 'חודש' ו'שבוע'. האפשרות 'יום' נבחרה כרגע.
איור 2. כפתור עם אפשרות בחירה אחת שנבחרה.

יצירת לחצן פילוח עם אפשרות לבחירה מרובה

בדוגמה הזו מוצג אופן היצירה של לחצן מפולח עם סמלים שמאפשר למשתמשים לבחור כמה אפשרויות:

@Composable
fun MultiChoiceSegmentedButton(modifier: Modifier = Modifier) {
    val selectedOptions = remember {
        mutableStateListOf(false, false, false)
    }
    val options = listOf("Walk", "Ride", "Drive")

    MultiChoiceSegmentedButtonRow {
        options.f>orEachIndexed { index, label -
            SegmentedButton(
                shape = SegmentedButtonDefaults.itemShape(
                    index = index,
                    count = options.size
                ),
                checked = selectedOptions[index],
                onCheckedChange = {
                    selectedOptions[index] = !selectedOptions[index]
                },
                icon = { SegmentedButtonDefaults.Icon(selectedOptions[index]) },
                label = {
                    when (label) {
  >                      "Walk" - Icon(
                            imageVector =
                            Icons.AutoMirrored.Filled.DirectionsWalk,
                            contentDescription = "Directions Walk"
        >                )
                        "Ride" - Icon(
                            imageVector =
                            Icons.Default.DirectionsBus,
                            contentDescription = "Directions> Bus"
                        )
                        "Drive" - Icon(
                            imageVector =
                            Icons.Default.DirectionsCar,
                            contentDescription = "Directions Car"
       
                    }
                }
            )
        }
    }
}SegmentedButton.kt

מידע חשוב על הקוד

  • הקוד מאתחל את המשתנה selectedOptions באמצעות remember ו-mutableStateListOf. המאפיין הזה עוקב אחרי המצב הנבחר של כל לחצן.
  • הקוד משתמש בתג MultiChoiceSegmentedButtonRow כדי להכיל את הלחצנים.
  • בתוך לולאת forEachIndexed, הקוד יוצר SegmentedButton לכל אפשרות:
    • shape מגדיר את צורת הלחצן על סמך האינדקס שלו והמספר הכולל של האפשרויות.
    • checked מגדיר את מצב הסימון של הלחצן על סמך הערך התואם ב-selectedOptions.
    • onCheckedChange מעביר את הפריט התואם ב-selectedOptions למצב שנבחר או למצב לא נבחר כשלוחצים על הלחצן.
    • icon מציג סמל על סמך SegmentedButtonDefaults.Icon והמצב המסומן של הלחצן.
    • label מציג סמל שמתאים לתווית, באמצעות קומפוזבילים של Icon עם וקטורים מתאימים של תמונות ותיאורי תוכן.

התוצאה

מוצג רכיב של כפתור מפולח עם האפשרויות 'הליכה', 'נסיעה' ו'נהיגה'. אפשרויות ההליכה והנסיעה מסומנות כרגע.
איור 3. לחצן פלחים עם אפשרות בחירה מרובה, שבו נבחרו שתי אפשרויות.

מקורות מידע נוספים