Используйте сегментированную кнопку, чтобы пользователи могли выбирать из набора вариантов, расположенных рядом. Существует два типа сегментированных кнопок:
- Кнопка одиночного выбора : позволяет пользователям выбрать один вариант.
- Кнопка множественного выбора : позволяет пользователям выбирать от двух до пяти элементов. Для более сложного выбора или выбора более пяти элементов используйте фишки .

API поверхность
 Для создания сегментированных кнопок используйте макеты SingleChoiceSegmentedButtonRow и MultiChoiceSegmentedButtonRow . Эти макеты корректно размещают и определяют размер элементов SegmentedButton и используют следующие ключевые параметры:
-  space: регулирует перекрытие между кнопками.
-  content: Содержит содержимое строки сегментированных кнопок, которая обычно представляет собой последовательностьSegmentedButton.
Создать сегментированную кнопку с одним выбором
В этом примере показано, как создать сегментированную кнопку с одним выбором:
@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обновляетselectedIndexиндексом нажатой кнопки.
-  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с соответствующими векторными изображениями и описаниями содержимого.
 
-  
Результат

Дополнительные ресурсы
- Материал 3: Сегментированные кнопки
