כן, לעבור למכשיר הזה

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

  • מפעילים או משביתים את ההגדרה.
  • להפעיל או להשבית תכונה.
  • בוחרים באחת מהאפשרויות.

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

דוגמאות לרכיב "מתג" במצב בהיר ובמצב כהה.
איור 1. רכיב המתג.

הטמעה בסיסית

ההגדרה המלאה של ה-API מופיעה במאמר העזרה בנושא Switch. אלה כמה מהפרמטרים העיקריים שבהם אתם יכולים להשתמש:

  • ‫checked: המצב הראשוני של המתג.
  • ‫onCheckedChange: קריאה חוזרת (callback) שמופעלת כשהמצב של המתג משתנה.
  • ‫enabled: אם המתג מופעל או מושבת.
  • ‫colors: הצבעים של המתג.

הדוגמה הבאה היא הטמעה מינימלית של הרכיב הניתן לקישור Switch.

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

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

כך נראה היישום הזה כשהתיבה לא מסומנת:

מתג בסיסי לא מסומן.
איור 2. מתג לא מסומן.

כך זה נראה כשהאפשרות מסומנת:

מתג בסיסי במצב מופעל.
איור 3. מתג מסומן.

הטמעה מתקדמת

אלה הפרמטרים העיקריים שכדאי להשתמש בהם כשמטמיעים מתג מתקדם יותר:

  • ‫thumbContent: משמש להתאמה אישית של מראה הלחצן כשהוא מסומן.
  • ‫colors: משמש להתאמה אישית של צבע הפס והידית.

תמונה ממוזערת מותאמת אישית

אפשר להעביר כל רכיב Composable לפרמטר thumbContent כדי ליצור תמונה ממוזערת בהתאמה אישית. הדוגמה הבאה היא של מתג שמשתמש בסמל מותאם אישית ל-thumb:

@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. מתג עם סמל מותאם אישית למצב מסומן.

צבעים מותאמים אישית

בדוגמה הבאה אפשר לראות איך משתמשים בפרמטר colors כדי לשנות את הצבע של הלחצן והפס של המתג, בהתאם למצב של המתג (מופעל או כבוי).

@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,
        )
    )
}

ההטמעה הזו נראית כך:

מתג שמשתמש בפרמטר colors כדי להציג מתג עם צבעים בהתאמה אישית גם ללחצן וגם לפס.
איור 5. מתג עם צבעים בהתאמה אישית.

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