跳转到内容

Card

Card 是 Miuix 中的基础容器组件,用于承载相关内容和操作。它提供了具有 Miuix 风格的卡片容器,适用于信息展示、内容分组等场景。支持静态显示和交互式两种模式。

引入

kotlin
import top.yukonga.miuix.kmp.basic.Card
import top.yukonga.miuix.kmp.utils.PressFeedbackType // 如果使用交互式卡片

基本用法

Card 组件可以用于包装和组织内容(静态卡片):

kotlin
Card {
    Text("这是卡片内容")
}

属性

Card 属性

属性名类型说明默认值是否必须适用范围
modifierModifier应用于卡片的修饰符Modifier所有
cornerRadiusDp卡片圆角半径CardDefaults.CornerRadius所有
insideMarginPaddingValues卡片内部边距CardDefaults.InsideMargin所有
colorColor卡片背景颜色CardDefaults.DefaultColor()所有
pressFeedbackTypePressFeedbackType按压反馈类型PressFeedbackType.None交互式
showIndicationBoolean?显示点击指示效果false交互式
onClick(() -> Unit)?点击事件回调null交互式
onLongPress(() -> Unit)?长按事件回调null交互式
content@Composable ColumnScope.() -> Unit卡片内容区域的可组合函数-所有

注意

部分属性仅在创建可交互的卡片时可用!

CardDefaults 对象

CardDefaults 对象提供了卡片组件的默认值和颜色配置。

常量

常量名类型说明默认值
CornerRadiusDp卡片的圆角半径16.dp
InsideMarginPaddingValues卡片的内部边距PaddingValues(0.dp)

方法

方法名类型说明
DefaultColor()Color卡片的默认背景颜色

进阶用法

自定义样式卡片

kotlin
Card(
    cornerRadius = 8.dp,
    insideMargin = PaddingValues(16.dp),
    color = Color.LightGray.copy(alpha = 0.5f)
) {
    Text("自定义样式卡片")
}

内容丰富的卡片

kotlin
Card(
    modifier = Modifier.padding(16.dp),
    insideMargin = PaddingValues(16.dp)
) {
    Text(
        text = "卡片标题",
        style = MiuixTheme.textStyles.title2
    )
    Spacer(modifier = Modifier.height(8.dp))
    Text(
        text = "这是卡片的详细内容描述,可以包含多行文本信息。"
    )
    Spacer(modifier = Modifier.height(16.dp))
    Row(
        modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.End
    ) {
        TextButton(
            text = "取消",
            onClick = { /* 处理取消事件 */ }
        )
        Spacer(modifier = Modifier.width(8.dp))
        TextButton(
            text = "确定",
            colors = ButtonDefaults.textButtonColorsPrimary(), // 使用主题颜色
            onClick = { /* 处理确认事件 */ }
        )
    }
}

列表中的卡片

kotlin
LazyColumn {
    items(5) { index ->
        Card(
            modifier = Modifier
                .fillMaxWidth()
                .padding(horizontal = 16.dp, vertical = 8.dp),
            insideMargin = PaddingValues(16.dp)
        ) {
            Text("列表项 ${index + 1}")
        }
    }
}

可交互的卡片

kotlin
Card(
    modifier = Modifier.padding(16.dp),
    pressFeedbackType = PressFeedbackType.Sink, // 设置按压反馈为下沉动画效果
    showIndication = true, // 显示点击时的视觉反馈效果
    onClick = { /* 处理点击事件 */ },
    onLongPress = { /* 处理长按事件 */ }
) {
    Text("可交互的卡片")
}

基于 Apache-2.0 许可发布