Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Un pulsante di opzione consente a un utente di selezionare un'opzione da un insieme di opzioni. Utilizzi un pulsante di opzione quando è possibile selezionare un solo elemento da un elenco. Se gli utenti devono selezionare più di un elemento, utilizza un interruttore.
Figura 1. Una coppia di pulsanti di opzione con un'opzione selezionata.
Superficie API
Utilizza il componibile RadioButton per elencare le opzioni disponibili. Inserisci ogni opzione
RadioButton e la relativa etichetta all'interno di un componente Row per raggrupparle
insieme.
RadioButton include i seguenti parametri chiave:
selected: indica se il pulsante di opzione è selezionato.
onClick: una funzione lambda che la tua app esegue quando l'utente fa clic sul pulsante di opzione. Se è null, l'utente non può interagire direttamente con il pulsante
di opzione.
enabled: controlla se il pulsante di opzione è attivato o disattivato. Gli utenti
non possono interagire con i pulsanti di opzione disattivati.
interactionSource: consente di osservare lo stato di interazione del
pulsante, ad esempio se è premuto, se il cursore è sopra o se è selezionato.
Crea un pulsante di opzione di base
Il seguente snippet di codice mostra un elenco di pulsanti di opzione all'interno di un Column:
@ComposablefunRadioButtonSingleSelection(modifier:Modifier=Modifier){valradioOptions=listOf("Calls","Missed","Friends")val(selectedOption,onOptionSelected)=remember{mutableStateOf(radioOptions[0])}// Note that Modifier.selectableGroup() is essential to ensure correct accessibility behaviorColumn(modifier.selectableGroup()){radioOptions.forEach{text->
Row(Modifier.fillMaxWidth().height(56.dp).selectable(selected=(text==selectedOption),onClick={onOptionSelected(text)},role=Role.RadioButton).padding(horizontal=16.dp),verticalAlignment=Alignment.CenterVertically){RadioButton(selected=(text==selectedOption),onClick=null// null recommended for accessibility with screen readers)Text(text=text,style=MaterialTheme.typography.bodyLarge,modifier=Modifier.padding(start=16.dp))}}}}
radioOptions rappresenta le etichette dei pulsanti di opzione.
La funzione componibile remember crea una variabile di stato selectedOption
e una funzione per aggiornare lo stato chiamata onOptionSelected. Questo stato contiene
l'opzione del pulsante di opzione selezionato.
mutableStateOf(radioOptions[0]) inizializza lo stato al primo elemento
dell'elenco. "Chiamate" è il primo elemento, quindi il pulsante di opzione selezionato per
impostazione predefinita.
Modifier.selectableGroup() garantisce un comportamento di accessibilità corretto per
gli screen reader. Indica al sistema che gli elementi all'interno di questo Column
fanno parte di un gruppo selezionabile, il che consente un corretto supporto dello screen reader.
Modifier.selectable() fa sì che l'intero Row funga da singolo elemento selezionabile.
selected indica se l'attuale Row è selezionato in base allo stato di selectedOption.
La funzione lambda onClick aggiorna lo stato di selectedOption all'opzione
selezionata quando viene fatto clic su Row.
role = Role.RadioButton comunica ai servizi di accessibilità che Row
funziona come un pulsante di opzione.
RadioButton(...) crea il composable RadioButton.
onClick = null su RadioButton migliora l'accessibilità. In questo modo, il pulsante di opzione non gestisce direttamente l'evento di clic e consente al modificatore Rowselectable di gestire lo stato di selezione e il comportamento di accessibilità.
Risultato
Figura 2. Tre pulsanti di opzione con l'opzione "Amici" selezionata.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-08-28 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-08-28 UTC."],[],[],null,["A [radio button](https://m3.material.io/components/radio-button/overview) lets a user select an option from a set of\noptions. You use a radio button when only one item can be selected from a\nlist. If users need to select more than one item, use a [switch](https://m3.material.io/components/switch/overview)\ninstead.\n**Figure 1.** A pair of radio buttons with one option selected.\n\nAPI surface\n\nUse the [`RadioButton`](/reference/kotlin/androidx/compose/material3/package-summary#RadioButton(kotlin.Boolean,kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.material3.RadioButtonColors,androidx.compose.foundation.interaction.MutableInteractionSource)) composable to list the available options. Wrap each\n`RadioButton` option and its label inside a `Row` component to group them\ntogether.\n\n`RadioButton` includes the following key parameters:\n\n- `selected`: Indicates whether the radio button is selected.\n- `onClick`: A lambda function that your app executes when the user clicks the radio button. If this is `null`, the user can't interact directly with the radio button.\n- `enabled`: Controls whether the radio button is enabled or disabled. Users can't interact with disabled radio buttons.\n- `interactionSource`: Lets you observe the interaction state of the button, for example, whether it's pressed, hovered, or focused.\n\nCreate a basic radio button\n\nThe following code snippet renders a list of radio buttons within a `Column`:\n\n\n```kotlin\n@Composable\nfun RadioButtonSingleSelection(modifier: Modifier = Modifier) {\n val radioOptions = listOf(\"Calls\", \"Missed\", \"Friends\")\n val (selectedOption, onOptionSelected) = remember { mutableStateOf(radioOptions[0]) }\n // Note that Modifier.selectableGroup() is essential to ensure correct accessibility behavior\n Column(modifier.selectableGroup()) {\n radioOptions.forEach { text -\u003e\n Row(\n Modifier\n .fillMaxWidth()\n .height(56.dp)\n .selectable(\n selected = (text == selectedOption),\n onClick = { onOptionSelected(text) },\n role = Role.RadioButton\n )\n .padding(horizontal = 16.dp),\n verticalAlignment = Alignment.CenterVertically\n ) {\n RadioButton(\n selected = (text == selectedOption),\n onClick = null // null recommended for accessibility with screen readers\n )\n Text(\n text = text,\n style = MaterialTheme.typography.bodyLarge,\n modifier = Modifier.padding(start = 16.dp)\n )\n }\n }\n }\n}https://github.com/android/snippets/blob/7a0ebbee11495f628cf9d574f6b6069c2867232a/compose/snippets/src/main/java/com/example/compose/snippets/components/RadioButton.kt#L39-L70\n```\n\n\u003cbr /\u003e\n\nKey points about the code\n\n- `radioOptions` represents the labels for the radio buttons.\n- The `remember` composable function creates a state variable `selectedOption` and a function to update that state called `onOptionSelected`. This state holds the selected radio button option.\n - `mutableStateOf(radioOptions[0])` initializes the state to the first item in the list. \"Calls\" is the first item, so it's the radio button selected by default.\n- [`Modifier.selectableGroup()`](/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).selectableGroup()) ensures proper accessibility behavior for screen readers. It informs the system that the elements within this `Column` are part of a selectable group, which enables proper screen reader support.\n- [`Modifier.selectable()`](/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).selectable(kotlin.Boolean,kotlin.Boolean,androidx.compose.ui.semantics.Role,kotlin.Function0)) makes the entire `Row` act as a single selectable item.\n - `selected` indicates whether the current `Row` is selected based on the `selectedOption` state.\n - The `onClick` lambda function updates the `selectedOption` state to the clicked option when the `Row` is clicked.\n - `role = Role.RadioButton` informs accessibility services that the `Row` functions as a radio button.\n- `RadioButton(...)` creates the `RadioButton` composable.\n - `onClick = null` on the `RadioButton` improves accessibility. This prevents the radio button from handling the click event directly, and allows the `Row`'s `selectable` modifier to manage the selection state and accessibility behavior.\n\nResult **Figure 2.** Three radio buttons with the \"Friends\" option selected.\n\nAdditional resources\n\n- Material Design: [Buttons](https://m3.material.io/components/buttons/overview)"]]