跳转到内容

BasicComponent

BasicComponent 是 Miuix 中的基础标准组件。提供了标题、摘要以及左右两侧的可自定义内容区域,常用于构建列表项、设置项等界面元素。

本项目以此为基础提供了一些扩展组件,方便开发者快速构建符合设计规范的 UI 组件,详见扩展组件的使用。

引入

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

基本用法

BasicComponent 组件可以用于展示标题和摘要信息:

kotlin
BasicComponent(
    title = "设置项标题",
    summary = "这里是设置项的描述文本"
)

组件变体

可点击组件

kotlin
BasicComponent(
    title = "Wi-Fi",
    summary = "已连接到 MIUI-WiFi",
    onClick = { /* 处理点击事件 */ }
)

带左侧图标的组件

kotlin
BasicComponent(
    title = "昵称",
    summary = "一段简介",
    leftAction = {
        Icon(
            modifier = Modifier.padding(end = 16.dp),
            imageVector = MiuixIcons.Useful.Personal,
            contentDescription = "头像图标",
            tint = MiuixTheme.colorScheme.onBackground
        )
    },
    onClick = { /* 处理点击事件 */ }
)

带右侧操作的组件

kotlin
var isFlightMode by remember { mutableStateOf(false) }

BasicComponent(
    title = "飞行模式",
    rightActions = {
        Switch(
            checked = isFlightMode,
            onCheckedChange = { isFlightMode = it }
        )
    }
)

组件状态

禁用状态

kotlin
BasicComponent(
    title = "移动网络",
    summary = "SIM卡未插入",
    enabled = false
)

属性

BasicComponent 属性

属性名类型说明默认值是否必须
titleString?组件标题null
titleColorBasicComponentColors标题颜色配置BasicComponentDefaults.titleColor()
summaryString?组件摘要null
summaryColorBasicComponentColors摘要颜色配置BasicComponentDefaults.summaryColor()
leftAction@Composable (() -> Unit?)?组件左侧的可组合内容null
rightActions@Composable RowScope.() -> Unit组件右侧的可组合内容{}
modifierModifier应用于组件的修饰符Modifier
insideMarginPaddingValues组件内部边距BasicComponentDefaults.InsideMargin
onClick(() -> Unit)?点击组件时触发的回调null
holdDownStateBoolean组件是否处于按下状态false
enabledBoolean组件是否可用true
interactionSourceMutableInteractionSource组件的交互源remember { MutableInteractionSource() }

BasicComponentDefaults 对象

BasicComponentDefaults 对象提供了 BasicComponent 组件的默认值和颜色配置。

常量

常量名类型说明默认值
InsideMarginPaddingValues组件的内部边距PaddingValues(16.dp)

方法

方法名类型说明
titleColor()BasicComponentColors创建标题颜色配置
summaryColor()BasicComponentColors创建摘要颜色配置

BasicComponentColors 类

用于配置组件的颜色状态。

属性名类型说明
colorColor正常状态的颜色
disabledColorColor禁用状态的颜色

进阶用法

复杂布局组件

kotlin
BasicComponent(
    title = "音量",
    summary = "媒体音量:70%",
        leftAction = {
        Icon(
        modifier = Modifier.padding(end = 16.dp),
            imageVector = MiuixIcons.Useful.Play,
            contentDescription = "音量图标",
            tint = MiuixTheme.colorScheme.onBackground
        )
    },
    rightActions = {
        IconButton(onClick = { /* 减小音量 */ }) {
            Icon(
                imageVector = MiuixIcons.Useful.Remove,
                contentDescription = "减小音量",
                tint = MiuixTheme.colorScheme.onBackground
            )
        }
        Text("70%")
        IconButton(onClick = { /* 增大音量 */ }) {
            Icon(
                imageVector = MiuixIcons.Useful.New,
                contentDescription = "增大音量",
                tint = MiuixTheme.colorScheme.onBackground
            )
        }
    }
)

自定义样式组件

kotlin
BasicComponent(
    title = "自定义组件",
    summary = "使用自定义颜色",
    titleColor = BasicComponentColors(
        color = Color.Blue,
        disabledColor = Color.Gray
    ),
    summaryColor = BasicComponentColors(
        color = Color.DarkGray,
        disabledColor = Color.LightGray
    ),
    insideMargin = PaddingValues(horizontal = 24.dp, vertical = 12.dp),
    onClick = { /* 处理选项点击 */ }
)

列表中使用

kotlin
val options = listOf("选项1", "选项2", "选项3", "选项4")

Column {
    options.forEach { option ->
        BasicComponent(
            title = option,
            onClick = { /* 处理选项点击 */ }
        )
    }
}

基于 Apache-2.0 许可发布