Skip to content

容器与卡片 (Container)

1. 卡片 (Card)

M3 提供了三种样式的卡片,常用于展示包含相关信息的内容块。

kotlin
Card(
    onClick = { /* ... */ },
    modifier = Modifier.size(width = 180.dp, height = 100.dp)
) {
    Box(Modifier.fillMaxSize()) {
        Text("Filled Card", Modifier.align(Alignment.Center))
    }
}
kotlin
OutlinedCard(
    modifier = Modifier.size(width = 180.dp, height = 100.dp)
) {
    // 内容
}
kotlin
ElevatedCard(
    modifier = Modifier.size(width = 180.dp, height = 100.dp)
) {
    // 内容
}

2. 标签 (Chip)

Chip 用于显示过滤选项、输入标签或操作建议。

kotlin
// 1. 辅助 Chip (AssistChip)
AssistChip(
    onClick = { },
    label = { Text("添加到日历") },
    leadingIcon = { Icon(Icons.Filled.Event, null) }
)

// 2. 过滤 Chip (FilterChip)
var selected by remember { mutableStateOf(false) }
FilterChip(
    onClick = { selected = !selected },
    label = { Text("仅看未读") },
    selected = selected,
    leadingIcon = if (selected) {
        { Icon(Icons.Filled.Done, null) }
    } else null
)

// 3. 输入 Chip (InputChip)
InputChip(
    onClick = { },
    label = { Text("Android") },
    selected = true,
    avatar = { /* ... */ },
    trailingIcon = { Icon(Icons.Filled.Close, null) }
)

3. 徽章 (Badge)

通常与图标一起使用,用于显示通知数量。

kotlin
BadgedBox(
    badge = {
        Badge { Text("8") }
    }
) {
    Icon(
        imageVector = Icons.Filled.Email,
        contentDescription = "邮件"
    )
}

4. 分割线 (Divider)

M3 中分为水平和垂直两种。

kotlin
HorizontalDivider(thickness = 1.dp, color = Color.Gray)
VerticalDivider()