Saltearse al contenido

RadioButton

MaterialMaterial 3
Imagen del componente RadioButton - MaterialImagen del componente RadioButton - Material 3

Los RadioButton se utilizan para mostrar un listado de opciones donde SOLO debería poder seleccionarse uno.

Implementación

Definición del componente

Terminal window
@Composable
fun RadioButton(
selected: Boolean,
onClick: (() -> Unit)?,
modifier: Modifier = Modifier,
enabled: Boolean = true,
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
colors: RadioButtonColors = RadioButtonDefaults.colors()
)
AtributoDescripción
selectedDetermina el estado del botón, si está seleccionado o no.
onClickFunción lambda que se ejecutará cuando el usuario pulse el botón.
modifierModificador que implementará el composable.
enabledPermite habilitar o deshabilitar (que no se pueda pulsar) el botón.
interactionSourceRepresenta un stream de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja.
colorsObjeto RadioButtonColors que determina los colores para todos los distintos estados del componente.

Ejemplos

Imagen del componente RadioButton - Material
Terminal window
@Composable
fun FloatingActionButtonExample() {
FloatingActionButton(onClick = { print("Hello") }) {
Icon(Icons.Filled.Favorite, "Floating action button.")
}
}
Imagen del componente RadioButton en listado - Material
Terminal window
enum class ProgrammingLanguage {
Java,
Kotlin,
Dart,
Swift
}
@Preview
@Composable
fun RadioButtonListExample() {
val programmingLanguageList = listOf(Java, Kotlin, Dart, Swift)
var selectedLanguage by remember { mutableStateOf(Kotlin) }
Column(Modifier.padding(6.dp)) {
programmingLanguageList.forEach { language ->
Row(Modifier.padding(6.dp), verticalAlignment = Alignment.CenterVertically) {
RadioButton(
selected = selectedLanguage == language,
onClick = { selectedLanguage = language }
)
Text(text = language.name, color = Color.White, modifier = Modifier.padding(start = 16.dp))
}
}
}
}