Utilizza un pulsante segmentato per consentire agli utenti di scegliere tra un insieme di opzioni affiancate. Esistono due tipi di pulsanti segmentati:
- Pulsante di selezione singola: consente agli utenti di scegliere un'opzione.
- Pulsante di selezione multipla: consente agli utenti di scegliere tra due e cinque elementi. Per scelte più complesse o più di cinque elementi, utilizza i chip.
 
  Piattaforma API
Utilizza i layout SingleChoiceSegmentedButtonRow e
MultiChoiceSegmentedButtonRow per creare pulsanti segmentati. Questi
layout posizionano e dimensionano correttamente i SegmentedButton
e condividono i seguenti parametri chiave:
- space: regola la sovrapposizione tra i pulsanti.
- content: contiene il contenuto della riga di pulsanti segmentati, che in genere è una sequenza di- SegmentedButton.
Creare un pulsante segmentato a selezione singola
Questo esempio mostra come creare un pulsante segmentato a selezione singola:
@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) } ) } } }
Punti chiave del codice
- Inizializza una variabile selectedIndexutilizzandorememberemutableIntStateOfper monitorare l'indice del pulsante selezionato.
- Definisce un elenco di optionsche rappresentano le etichette dei pulsanti.
- SingleChoiceSegmentedButtonRowti consente di selezionare un solo pulsante.
- Crea un SegmentedButtonper ogni opzione all'interno del cicloforEachIndexed:- shapedefinisce la forma del pulsante in base al suo indice e al conteggio totale delle opzioni utilizzando- SegmentedButtonDefaults.itemShape.
- onClickupdates- selectedIndexwith the clicked button's index.
- selectedimposta lo stato di selezione del pulsante in base a- selectedIndex.
- labelmostra l'etichetta del pulsante utilizzando il componibile- Text.
 
Risultato
 
  Creare un pulsante segmentato a selezione multipla
Questo esempio mostra come creare un pulsante segmentato a scelta multipla con icone che consente agli utenti di selezionare più opzioni:
@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" ) } } ) } } }
Punti chiave del codice
- Il codice inizializza la variabile selectedOptionsutilizzandorememberemutableStateListOf. Questo monitora lo stato selezionato di ogni pulsante.
- Il codice utilizza MultiChoiceSegmentedButtonRowper contenere i pulsanti.
- All'interno del ciclo forEachIndexed, il codice crea unSegmentedButtonper ogni opzione:- shapedefinisce la forma del pulsante in base al suo indice e al numero totale di opzioni.
- checkedimposta lo stato di selezione del pulsante in base al valore corrispondente in- selectedOptions.
- onCheckedChangeattiva/disattiva lo stato selezionato dell'elemento corrispondente in- selectedOptionsquando viene fatto clic sul pulsante.
- iconmostra un'icona in base a- SegmentedButtonDefaults.Icone allo stato di selezione del pulsante.
- labelmostra un'icona corrispondente all'etichetta, utilizzando i componibili- Iconcon vettori di immagini e descrizioni dei contenuti appropriati.
 
Risultato
 
  Risorse aggiuntive
- Material 3: pulsanti segmentati
