主题与样式

大约 1 分钟约 435 字

主题与样式

Kuikly Compose 提供了 Material3 主题体系:MaterialTheme 作为主题入口,ColorScheme、Typography、Shapes 分别描述配色、字体排印与形状。

MaterialTheme

MaterialTheme 是一个 @Composable 函数,作为主题入口包裹页面内容;同时提供同名的 object MaterialTheme,用于在 @Composable 中读取当前主题值。

设置主题

参数描述类型
content 必需主题作用域内的内容@Composable () -> Unit
setContent {
    MaterialTheme {
        DemoScreen()
    }
}

读取主题值

属性描述类型
MaterialTheme.colorScheme当前配色ColorScheme
MaterialTheme.typography当前字体排印Typography
MaterialTheme.shapes当前形状体系Shapes
@Composable
fun ThemedText() {
    Text(
        text = "标题",
        color = MaterialTheme.colorScheme.primary,
        style = MaterialTheme.typography.titleLarge
    )
}

当前支持范围

colorScheme、typography、shapes 当前均使用框架默认值,不支持通过 MaterialTheme() 自定义。

如需自定义颜色或文本样式,请在组件上直接传参,例如 Text(color = ...)、Text(style = ...)、Modifier.background(color = ...)。

ColorScheme

ColorScheme 描述 Material3 配色,字段采用「角色 + 容器」命名(如 primary / onPrimary / primaryContainer)。

常用字段:

字段说明
primary / onPrimary / primaryContainer / onPrimaryContainer主色及其前景色、容器色
secondary / onSecondary / secondaryContainer / onSecondaryContainer辅助色
tertiary / onTertiary / tertiaryContainer / onTertiaryContainer第三色
background / onBackground背景色
surface / onSurface / surfaceVariant / onSurfaceVariant表面色
surfaceContainerLow / surfaceContainer / surfaceContainerHigh / surfaceContainerHighest / surfaceContainerLowest分级表面容器色
surfaceBright / surfaceDim明暗表面色
error / onError / errorContainer / onErrorContainer错误色
outline / outlineVariant描边色
inverseSurface / inverseOnSurface / inversePrimary反色
scrim / surfaceTint遮罩色 / 表面着色

提示

完整字段列表以源码为准。

Typography

Typography 描述字体排印,字段按 Material3 的类型比例划分:

分类字段
DisplaydisplayLarge、displayMedium、displaySmall
HeadlineheadlineLarge、headlineMedium、headlineSmall
TitletitleLarge、titleMedium、titleSmall
BodybodyLarge、bodyMedium、bodySmall
LabellabelLarge、labelMedium、labelSmall

Shapes

Shapes 描述形状体系,通过 MaterialTheme.shapes 读取,当前为默认的 Shapes()。