Checkbox 复选框 & RadioButton 单选框
Checkbox 复选框提供了在多个选项中选择一个或多个选项的作用。
RadioButton 单选框提供了在多个选项中只能选择一个选项的作用。
下面就分别来介绍下 Android Compose UI 库中的 Checkbox 复选框 和 RadioButton 单选框。
RadioButton
RadioButton 是一个用于在用户界面中创建单选按钮的组件。单选按钮通常用于在多个选项中选择一个,与其他单选按钮组合使用时,它们表现为互斥的:用户只能选择其中的一个。
RadioButton 组件非常灵活,可以轻松地与各种布局和修饰符结合使用,以实现所需的用户界面设计。它允许开发者通过参数自定义其外观和行为,如选中状态、颜色、大小等。
与传统的 Android View 系统相比,Compose 中的 RadioButton 提供了更简洁、声明式的方式来创建和维护用户界面。它适用于各种屏幕大小和分辨率,可以轻松地适应不同的设备和配置。
下面是 RadioButton 的声明
@Composable
fun RadioButton(
selected: Boolean,
onClick: (() -> Unit)?,
modifier: Modifier = Modifier,
enabled: Boolean = true,
colors: RadioButtonColors = RadioButtonDefaults.colors(),
interactionSource: MutableInteractionSource? = null
): Unit
| 参数 | 类型 | 描述 |
|---|---|---|
| selected | Boolean | 它是一个布尔值 (Boolean),用于指示单选按钮当前是否被选中。如果 selected 为 true,则单选按钮会被绘制为选中状态;如果为 false,则为未选中状态。 |
| onClick | (() -> Unit)? | 它是一个可选的 Lambda 表达式((() -> Unit)?),当用户点击单选按钮时会被调用。你可以在这个 Lambda 表达式中编写当用户点击单选按钮时应执行的代码。 |
| modifier | Modifier | 它是一个 Modifier 类型的参数,用于修改或增强单选按钮的布局或行为。Modifier 是 Compose 中一个非常核心的概念,用于处理布局调整、大小、位置、绘制层等各种属性。 |
| enabled | Boolean | 它是一个布尔值 (Boolean),用于指示单选按钮是否可以被用户交互。如果 enabled 为 true,则单选按钮可以被点击和选中;如果为 false,则单选按钮将显示为禁用状态,无法响应用户的交互。 |
| colors | RadioButtonColors | 它是一个 RadioButtonColors 类型的参数,用于定义单选按钮的不同颜色属性,比如选中状态的颜色、未选中状态的颜色等。通过传递自定义的 RadioButtonColors 对象,你可以很容易地自定义单选按钮的视觉样式。 |
| interactionSource | MutableInteractionSource? | 它是一个可选的 MutableInteractionSource? 类型的参数,用于处理单选按钮的交互状态(如被按下、获得焦点等)。这个参数通常用于与可访问性服务(如屏幕阅读器)交互,以及实现更复杂的交互效果。如果你不需要处理这些交互状态,可以忽略这个参数。 |
下面通过示例来说明它的使用。
示例如下,修饰符 selectableGroup() 将若干个 RadioButton 归为一组,并确保正确的可达性。
@Composable
fun RadioButtonDemo() {
val radioOptions = listOf("男", "女")
val (selectedOption, onOptionSelected) = remember { mutableStateOf(radioOptions[0]) }
Column(modifier=Modifier.fillMaxSize().selectableGroup()) {
radioOptions.forEach { text ->
Row(modifier = 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)
Text(text = text, style = MaterialTheme.typography.bodyLarge, modifier = Modifier.padding(start = 16.dp))
}
}
}
}

Compose UI 中的 RadioButton 是一种用于创建单选按钮的组件,它允许用户在多个选项中选择一个。它具有高度的可定制性,开发者可以通过参数设置其外观和行为,如选中状态、颜色等。RadioButton 组件易于与其他 Compose UI 元素集成,可以灵活地适应不同的布局和屏幕尺寸,为用户提供直观且友好的单选交互体验。
Checkbox
Checkbox 用于多选或者打开/关闭某项设置。Compose 中的 Checkbox 与 View 系统中的 Checkbox 最直接的不同,View 系统中的 Checkbox 可以设置文本信息及与文本相关的各种属性值,因为在继承关系中它最后继承自 TextView ,而 Compose 中的 Checkbox 只是一个复选框,不包含文本部分,这样更单纯,更注重状态的变化。
Checkbox 的声明如下
@Composable
fun Checkbox(
checked: Boolean,
onCheckedChange: ((Boolean) -> Unit)?,
modifier: Modifier = Modifier,
enabled: Boolean = true,
colors: CheckboxColors = CheckboxDefaults.colors(),
interactionSource: MutableInteractionSource? = null
): Unit
| 参数 | 类型 | 说明 |
|---|---|---|
| checked | Boolean | 这个参数表示复选框的当前状态,即是否被选中。true 表示复选框被选中,false 表示未被选中。 |
| onCheckedChange | ((Boolean) -> Unit)? | 这是一个可选的 lambda 函数,当复选框的状态发生变化时会被调用。它接收一个 Boolean 类型的参数,表示复选框的新状态。 |
| modifier | Modifier | 它用于修改或装饰可组合函数的行为。这里,它有一个默认值 Modifier,意味着如果不提供任何修饰符,复选框将使用默认的修饰符。 |
| enabled | Boolean | 这个参数表示复选框是否可以被用户交互。默认值为 true,意味着复选框默认是启用的。如果设置为 false,复选框将显示为禁用状态,并且不会响应用户的交互。 |
| colors | CheckboxColors | 这个参数允许你自定义复选框的颜色。CheckboxColors 是一个包含不同颜色属性的对象,用于定义复选框在不同状态下的颜色。默认值是 CheckboxDefaults.colors(),它提供了一套默认的颜色方案。 |
| interactionSource | MutableInteractionSource? | 这是一个可选的参数,用于处理复选框的交互状态,如按下、聚焦等。MutableInteractionSource 是一个可以观察和修改交互状态的对象。如果不提供这个参数,复选框将使用默认的交互源。 |
Checkbox 通常用于以下场景:
- 设置页中打开/关闭一个功能。例如,一个应用提供一个
Checkbox,让用户选择是否接收推送通知。 - 表单输入。例如,一个问卷调查应用用多个
Checkbox来让用户选择他们的兴趣爱好。 - 列表选项。例如,一个购物应用显示一个商品列表,每个商品旁边都有一个 Checkbox,允许用户选择他们想要购买的商品。
- 筛选。例如,一个音乐应用,在歌曲过滤列表中,可以选择多个过滤条件来筛选出想要的音乐。
下面是 Checkbox 的使用示例。
-
配合状态的
Checkbox。@Composable fun CheckboxSample() { val (checkedState, onStateChange) = remember { mutableStateOf(true) } Row( modifier = Modifier.fillMaxWidth().height(60.dp) .toggleable(value = checkedState, onValueChange = { onStateChange(!checkedState) }, role = Role.Checkbox) .padding(horizontal = 16.dp), verticalAlignment = Alignment.CenterVertically ) { Checkbox(checked = checkedState, onCheckedChange = null) Text(text=if (checkedState) "打开" else "关闭",style = MaterialTheme.typography.bodyLarge,modifier=Modifier.padding(start=16.dp)) } }
-
列表中的
Checkbox。@Composable fun CheckboxListSample() { val checklistItems = remember { // 记录状态列表 mutableStateListOf( ChecklistItem("Item 1"), ChecklistItem("Item 2"), ChecklistItem(title = "Item 3", isChecked = true), ) } LazyColumn { // 依据 item 数量添加 composable 组件。 items(checklistItems.size) { index -> // 一个 item 的的组件 Row( modifier = Modifier .fillMaxWidth() .padding(PaddingValues(horizontal = 10.dp, vertical = 5.dp)), verticalAlignment = Alignment.CenterVertically ) { // 开始的 Checkbox 组件。 Checkbox( checked = checklistItems[index].isChecked, onCheckedChange = { isChecked -> checklistItems[index] = checklistItems[index].copy(isChecked = isChecked) } ) // 接着一个 Text 组件。 Text(text = checklistItems[index].title, fontSize = 16.0.sp, fontWeight = FontWeight.Bold) } } } }
Checkbox 组件是一个可复用的 UI 元素,它允许用户在多个选项中选择一个或多个。 Checkbox 通常与文本一起显示,以描述选项的内容。在Compose 中,Checkbox 可以轻松地与其他组件组合和定制,以创建丰富和动态的用户界面。通过使用 Checkbox,开发者可以提供直观且易于使用的选择机制,增强应用程序的用户体验。
总结
Checkbox 和 RadioButton 都是用于用户交互的常用组件,但它们的功能和用途有所不同。
Checkbox 是一个可以勾选或取消勾选的复选框,用户可以选择多个选项。它通常用于表示一系列可选项目,用户可以根据自己的需要选择任意数量的选项。在 Android Compose 的视觉呈现上,Checkbox 可能具有特定的样式和动画效果,以符合 Material Design 或其他设计规范。
RadioButton 则是一个单选按钮,它表示一组互斥的选项。在一组 RadioButton 中,用户只能选择其中一个选项,一旦选中某个按钮,其他按钮会自动取消选中状态。RadioButton 在视觉呈现上通常以圆形表示,并且通常放在 RadioGroup 中使用,以体现其“单选”的特性。
Checkbox 允许用户选择多个选项,而 RadioButton 则用于在互斥的选项中进行单一选择。它们在 Android Compose 用户界面中提供了不同的交互方式和视觉表现,开发者可以根据具体需求选择合适的组件来实现所需的功能。
本文介绍了Android Compose UI中的Checkbox复选框和RadioButton单选框。Checkbox适用于多选,RadioButton用于单选,两者都具有高度可定制性,能够适应不同布局和屏幕尺寸,为用户提供直观的交互体验。

1260

被折叠的 条评论
为什么被折叠?



