Un botón de selección permite que el usuario seleccione una opción de un conjunto de opciones. Usa un botón de selección cuando solo se pueda seleccionar un elemento de una lista. Si los usuarios deben seleccionar más de un elemento, usa un interruptor en su lugar.
Superficie de la API
Usa el elemento RadioButton componible para enumerar las opciones disponibles. Encapsula cada opción RadioButton y su etiqueta dentro de un componente Row para agruparlas.
RadioButton incluye los siguientes parámetros clave:
selected: Indica si el botón de selección está seleccionado.onClick: Es una función lambda que ejecuta tu app cuando el usuario hace clic en el botón de opción. Si esnull, el usuario no puede interactuar directamente con el botón de selección.enabled: Controla si el botón de selección está habilitado o inhabilitado. Los usuarios no pueden interactuar con los botones de radio inhabilitados.interactionSource: Te permite observar el estado de interacción del botón, por ejemplo, si está presionado, si el mouse se encuentra sobre él o si está enfocado.
Cómo crear un botón de opción básico
El siguiente fragmento de código renderiza una lista de botones de selección dentro de un Column:
@Composable fun RadioButtonSingleSelection(modifier: Modifier = Modifier) { val radioOptions = listOf("Calls", "Missed", "Friends") val (selectedOption, onOptionSelected) = remember { mutableStateOf(radioOptions[0]) } // Note that Modifier.selectableGroup() is essential to ensure correct accessibility behavior Column(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) ) } } } }
Puntos clave sobre el código
radioOptionsrepresenta las etiquetas de los botones de selección.- La función de componibilidad
remembercrea una variable de estadoselectedOptiony una función para actualizar ese estado llamadaonOptionSelected. Este estado contiene la opción del botón de selección seleccionada.mutableStateOf(radioOptions[0])inicializa el estado en el primer elemento de la lista. “Llamadas” es el primer elemento, por lo que es el botón de selección que se selecciona de forma predeterminada.
Modifier.selectableGroup()garantiza el comportamiento de accesibilidad adecuado para los lectores de pantalla. Informa al sistema que los elementos dentro de esteColumnforman parte de un grupo seleccionable, lo que permite una compatibilidad adecuada con el lector de pantalla.Modifier.selectable()hace que todo elRowactúe como un solo elemento seleccionable.selectedindica si elRowactual está seleccionado según el estado deselectedOption.- La función lambda
onClickactualiza el estadoselectedOptiona la opción en la que se hizo clic cuando se hace clic enRow. role = Role.RadioButtoninforma a los servicios de accesibilidad queRowfunciona como un botón de selección.
RadioButton(...)crea el elementoRadioButtoncomponible.- El
onClick = nullen elRadioButtonmejora la accesibilidad. Esto evita que el botón de selección controle el evento de clic directamente y permite que el modificadorselectabledeRowadministre el estado de selección y el comportamiento de accesibilidad.
- El
Resultado
Recursos adicionales
- Material Design: Botones