跳转到内容

CheckBox

CheckBox 是 Miuix 中的基础选择组件,用于在选中与未选中状态间切换。它提供了具有动画效果的交互式选择控件,适用于多选场景和配置项的启用与禁用。

引入

kotlin
import top.yukonga.miuix.kmp.basic.Checkbox

基本用法

CheckBox 组件可以用于创建可选择的选项:

kotlin
var checked by remember { mutableStateOf(false) }

Checkbox(
    checked = checked,
    onCheckedChange = { checked = it }
)

组件状态

禁用状态

kotlin
var checked by remember { mutableStateOf(false) }

Checkbox(
    checked = checked,
    onCheckedChange = { checked = it },
    enabled = false
)

属性

Checkbox 属性

属性名类型说明默认值是否必须
checkedBoolean复选框是否处于选中状态-
onCheckedChange((Boolean) -> Unit)?选中状态变化时的回调函数-
modifierModifier应用于复选框的修饰符Modifier
colorsCheckboxColors复选框的颜色配置CheckboxDefaults.checkboxColors()
enabledBoolean复选框是否可交互true

CheckboxDefaults 对象

CheckboxDefaults 对象提供了 Checkbox 组件的默认颜色配置。

方法

方法名类型说明
checkboxColors()CheckboxColors创建复选框的默认颜色配置

CheckboxColors 类

属性名类型说明
checkedForegroundColorColor选中状态时前景色(对勾颜色)
uncheckedForegroundColorColor未选中状态时前景色
disabledCheckedForegroundColorColor禁用且选中状态时前景色
disabledUncheckedForegroundColorColor禁用且未选中状态时前景色
checkedBackgroundColorColor选中状态时背景色
uncheckedBackgroundColorColor未选中状态时背景色
disabledCheckedBackgroundColorColor禁用且选中状态时背景色
disabledUncheckedBackgroundColorColor禁用且未选中状态时背景色

进阶用法

自定义颜色

kotlin
var checked by remember { mutableStateOf(false) }

Checkbox(
    checked = checked,
    onCheckedChange = { checked = it },
    colors = CheckboxDefaults.checkboxColors(
        checkedBackgroundColor = Color.Red,
        checkedForegroundColor = Color.White
    )
)

结合文本使用

kotlin
var checked by remember { mutableStateOf(false) }

Row(
    verticalAlignment = Alignment.CenterVertically,
    modifier = Modifier.padding(16.dp)
) {
    Checkbox(
        checked = checked,
        onCheckedChange = { checked = it }
    )
    Spacer(modifier = Modifier.width(8.dp))
    Text(text = "接受用户协议与隐私政策")
}

在列表中使用

kotlin
val options = listOf("选项 A", "选项 B", "选项 C")
val checkedStates = remember { mutableStateListOf(false, true, false) }

LazyColumn {
    items(options.size) { index ->
        Row(
            modifier = Modifier.fillMaxWidth().padding(16.dp),
            verticalAlignment = Alignment.CenterVertically
        ) {
            Checkbox(
                checked = checkedStates[index],
                onCheckedChange = { checkedStates[index] = it }
            )
            Spacer(modifier = Modifier.width(8.dp))
            Text(text = options[index])
        }
    }
}

整行列表可点击

kotlin
data class Option(val text: String, var isSelected: Boolean)
val options = remember {
    mutableStateListOf(
        Option("选项 1", false),
        Option("选项 2", true),
        Option("选项 3", false)
    )
}

LazyColumn {
    items(options.size) { index ->
        Row(
            modifier = Modifier
                .fillMaxWidth()
                .clickable {
                    options[index] = options[index].copy(
                        isSelected = !options[index].isSelected
                    )
                }
                .padding(16.dp),
            verticalAlignment = Alignment.CenterVertically
        ) {
            Checkbox(
                checked = options[index].isSelected,
                onCheckedChange = { selected ->
                    options[index] = options[index].copy(isSelected = selected)
                }
            )
            Spacer(modifier = Modifier.width(16.dp))
            Text(text = options[index].text)
        }
    }
}

基于 Apache-2.0 许可发布