Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Mit einem Optionsfeld kann ein Nutzer eine Option aus einer Reihe von Optionen auswählen. Sie verwenden ein Optionsfeld, wenn aus einer Liste nur ein Element ausgewählt werden kann. Wenn Nutzer mehr als ein Element auswählen müssen, verwenden Sie stattdessen einen Schalter.
Abbildung 1: Ein Optionsfeldpaar, bei dem eine Option ausgewählt ist.
API-Oberfläche
Verwenden Sie die zusammensetzbare Funktion RadioButton, um die verfügbaren Optionen aufzulisten. Schließen Sie jede RadioButton-Option und ihr Label in eine Row-Komponente ein, um sie zu gruppieren.
RadioButton umfasst die folgenden wichtigen Parameter:
selected: Gibt an, ob das Optionsfeld ausgewählt ist.
onClick: Eine Lambda-Funktion, die von Ihrer App ausgeführt wird, wenn der Nutzer auf das Optionsfeld klickt. Wenn dieser Wert null ist, kann der Nutzer nicht direkt mit dem Optionsfeld interagieren.
enabled: Steuert, ob das Optionsfeld aktiviert oder deaktiviert ist. Nutzer können nicht mit deaktivierten Optionsfeldern interagieren.
interactionSource: Hiermit können Sie den Interaktionsstatus der Schaltfläche beobachten, z. B. ob sie gedrückt, mit dem Mauszeiger darauf bewegt oder fokussiert wurde.
Einfache Optionsschaltfläche erstellen
Das folgende Code-Snippet rendert eine Liste von Optionsfeldern in einem 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 steht für die Labels der Optionsfelder.
Mit der zusammensetzbaren Funktion remember wird eine Statusvariable selectedOption und eine Funktion zum Aktualisieren dieses Status namens onOptionSelected erstellt. In diesem Status wird die ausgewählte Optionsfeldauswahl gespeichert.
mutableStateOf(radioOptions[0]) initialisiert den Status mit dem ersten Element in der Liste. „Anrufe“ ist das erste Element, also das standardmäßig ausgewählte Optionsfeld.
Modifier.selectableGroup() sorgt für ein korrektes Verhalten in Bezug auf die Barrierefreiheit für Screenreader. Es informiert das System darüber, dass die Elemente in diesem Column-Element Teil einer auswählbaren Gruppe sind, was eine korrekte Unterstützung von Screenreadern ermöglicht.
Mit Modifier.selectable() wird das gesamte Row als einzelnes auswählbares Element behandelt.
selected gibt an, ob die aktuelle Row basierend auf dem selectedOption-Status ausgewählt ist.
Die Lambda-Funktion onClick aktualisiert den Status selectedOption auf die angeklickte Option, wenn auf Row geklickt wird.
role = Role.RadioButton informiert Bedienungshilfen darüber, dass Row als Optionsfeld fungiert.
Mit RadioButton(...) wird die zusammensetzbare Funktion RadioButton erstellt.
onClick = null auf der RadioButton verbessert die Bedienungshilfen. Dadurch wird verhindert, dass das Optionsfeld das Klickereignis direkt verarbeitet. Stattdessen kann der Row-Modifikator selectable den Auswahlstatus und das Verhalten der Bedienungshilfe verwalten.
Ergebnis
Abbildung 2. Drei Optionsfelder, wobei die Option „Freunde“ ausgewählt ist.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-08-23 (UTC).
[null,null,["Zuletzt aktualisiert: 2025-08-23 (UTC)."],[],[],null,["# Radio button\n\nA [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-----------\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---------------------------\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/dd30aee903e8c247786c064faab1a9ca8d10b46e/compose/snippets/src/main/java/com/example/compose/snippets/components/RadioButton.kt#L39-L70\n```\n\n\u003cbr /\u003e\n\n### Key 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\n### Result\n\n**Figure 2.** Three radio buttons with the \"Friends\" option selected.\n\nAdditional resources\n--------------------\n\n- Material Design: [Buttons](https://m3.material.io/components/buttons/overview)"]]