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

משטח API
אפשר להשתמש בפריסות SingleChoiceSegmentedButtonRow
ו-MultiChoiceSegmentedButtonRow
כדי ליצור לחצנים עם פלחים. הפריסות האלה קובעות את המיקום והגודל של SegmentedButton
בצורה נכונה, ומשתפות את הפרמטרים החשובים הבאים:
-
space
: משנים את החפיפה בין הלחצנים. -
content
: מכיל את התוכן של השורה של הלחצנים המופרדים, שבדרך כלל מורכב מרצף שלSegmentedButton
s.
יצירת כפתור פילוח עם אפשרות בחירה אחת
בדוגמה הזו מוצג איך ליצור לחצן פילוח עם אפשרות בחירה אחת:
@Composable fun SingleChoiceSegmentedButton(modifier: Modifier = Modifier) { var selectedIndex by remember { mutableIntStateOf(0) } val options = listOf("Day", "Month", "Week") SingleChoiceSegmentedButtonRow { options.forEachIndexed { index, label -> SegmentedButton( shape = SegmentedButtonDefaults.itemShape( index = index, count = options.size ), onClick = { selectedIndex = index }, selected = index == selectedIndex, label = { Text(label) } ) } } }
נקודות עיקריות לגבי הקוד
- מאתחלים את המשתנה
selectedIndex
באמצעותremember
ו-mutableIntStateOf
כדי לעקוב אחרי האינדקס של הלחצן שנבחר. - המדיניות הזו מגדירה רשימה של
options
שמייצגת את תוויות הלחצנים. SingleChoiceSegmentedButtonRow
מאפשר לבחור רק לחצן אחד.- יוצרת
SegmentedButton
לכל אפשרות, בתוך הלולאהforEachIndexed
:-
shape
מגדיר את צורת הלחצן על סמך האינדקס שלו והמספר הכולל של האפשרויות באמצעותSegmentedButtonDefaults.itemShape
. -
onClick
updatesselectedIndex
with the clicked button's index. -
selected
מגדיר את מצב הבחירה של הלחצן על סמךselectedIndex
. -
label
מציג את התווית של הלחצן באמצעות הקומפוזביליText
.
-
התוצאה

יצירת כפתור פילוח עם אפשרות לבחירה מרובה
בדוגמה הזו מוצג איך ליצור לחצן מפולח עם אפשרויות בחירה וסמלים, שמאפשר למשתמשים לבחור כמה אפשרויות:
@Composable fun MultiChoiceSegmentedButton(modifier: Modifier = Modifier) { val selectedOptions = remember { mutableStateListOf(false, false, false) } val options = listOf("Walk", "Ride", "Drive") MultiChoiceSegmentedButtonRow { options.forEachIndexed { 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" ) } } ) } } }
נקודות עיקריות לגבי הקוד
- הקוד מאתחל את המשתנה
selectedOptions
באמצעותremember
ו-mutableStateListOf
. המאפיין הזה עוקב אחרי המצב הנבחר של כל לחצן. - הקוד משתמש ב-
MultiChoiceSegmentedButtonRow
כדי להכיל את הלחצנים. - בתוך לולאת
forEachIndexed
, הקוד יוצרSegmentedButton
לכל אפשרות:-
shape
מגדיר את צורת הלחצן על סמך האינדקס שלו והמספר הכולל של האפשרויות. -
checked
מגדיר את מצב הסימון של הלחצן על סמך הערך התואם ב-selectedOptions
. -
onCheckedChange
מעביר את הפריט התואם ב-selectedOptions
למצב שנבחר או למצב שלא נבחר כשלוחצים על הלחצן. -
icon
מציג סמל על סמךSegmentedButtonDefaults.Icon
והמצב המסומן של הלחצן. -
label
מציג סמל שמתאים לתווית, באמצעות רכיבים קומפוזביליים שלIcon
עם וקטורים מתאימים של תמונות ותיאורי תוכן.
-
התוצאה

מקורות מידע נוספים
- Material 3: Segmented buttons