ב-Jetpack Compose Glimmer, ToggleButton הוא רכיב אינטראקטיבי שמשנה את המראה שלו בהתאם למצב הסימון. המתגים מותאמים למשקפיים עם תצוגה פנימית כדי לספק מעברים חזותיים ברורים בצורה ובצבע. המעברים האלה מציינים מתי פעולה או הגדרה פעילות.
משתמשים בלחצני מעבר כדי לחשוף פעולות שאפשר להפעיל או להשבית. בניגוד ללחצני מעבר עם סמלים בלבד, לחצן מעבר מציג בעיקר תוכן טקסטואלי, אבל הוא תומך במשבצות סמלים אופציונליות להוספת הקשר.
יש גם כפתורים רגילים וכפתורי סמלים לתרחישי שימוש אחרים.
אנטומיה
לחצן דו-מצבי מורכב ממאגר שמשנה את הצורה שלו בין מצבים שונים, ומתווית עם סמלים אופציונליים.
| חלק | תיאור |
|---|---|
מאגר |
אנימציה של מעבר בין צורה מעגלית (לא מסומנת) לבין מלבן מעוגל (מסומן). |
תווית |
בדרך כלל מדובר ב- |
סמלים (אופציונלי) |
משבצות שידור שמופיעות לפני או אחרי הפרסומת, והן עשויות להשתנות בהתאם למדינה. |
גדלים
בדומה ללחצנים רגילים, לחצני החלפה תומכים בשני גדלים:
| גודל | גובה מינימלי | שימוש ברירת מחדל |
|---|---|---|
בינוני |
48.dp |
גודל ברירת המחדל של התכונה האינטראקטיבית. |
גדול |
72.dp |
מתגים ראשיים או מודגשים. |
ברירות מחדל של מתגים
כברירת מחדל, כפתורי ההפעלה/השבתה משתמשים ב-ToggleButtonDefaults.animateShape. כך נוצר מעבר חלק בין המצבים הבאים:
- לא מסומן:
GlimmerTheme.shapes.large(בדרך כללCircleShape). - נבדק:
ToggleButtonDefaults.CheckedShape(RoundedCornerShapeעם20.dpפינות).
הסיווג ToggleButtonColors מנהל את רזולוציית הצבע למצבים הבאים:
- לא מסומן: ברירת המחדל היא
GlimmerTheme.colors.surface. - מסומן: ברירת המחדל היא
GlimmerTheme.colors.surface.
אנימציה
ההגדרות הבאות מוגדרות כברירת מחדל לאנימציה של מתגים:
-
animateShape: מספקShapeשמבצע אינטרפולציה של גדלי הפינות באמצעות מפרט של אנימציית קפיץ (stiffness = 600f). -
colors: פונקציית factory להתאמה אישית של צבעי הרקע והתוכן בשני המצבים. -
CheckedShape:RoundedCornerShape(20.dp)סטטי שמשמש למצב המסומן. -
contentPadding: עוברת בירושה מ-ButtonDefaults.contentPadding.
דוגמה: מתג
הקוד הבא יוצר לחצן בסיסי למעבר בין מצבים:
@Composable fun ToggleButtonSample() { var checked by remember { mutableStateOf(false) } val text = if (checked) "Toggle on" else "Toggle off" ToggleButton( checked = checked, onCheckedChange = { checked = it } ) { Text(text) } }
דוגמה: לחצן Toggle עם סמל מוביל
הקוד הבא יוצר לחצן מעבר עם סמל מוביל:
@Composable fun ToggleButtonWithLeadingIconSample() { var checked by remember { mutableStateOf(false) } ToggleButton( checked = checked, leadingIcon = { Icon( if (checked) FavoriteIcon else OutlinedFavoriteIcon, contentDescription = "Toggle favorite" ) }, onCheckedChange = { checked = it } ) { Text(if (checked) "On" else "Off") } }