跳转到内容

主题系统

Miuix 提供了一套完整的主题系统,使您能够轻松地在整个应用中保持一致的设计风格。整个主题系统由颜色方案和文本样式组成。

使用主题

要在您的应用中使用 Miuix 主题,只需将内容包装在 MiuixTheme 组合函数中:

kotlin
MiuixTheme {
    // 您的应用内容
    Scaffold(
        topBar = { /* ... */ },
    ) { padding ->
        // 主体内容
    }
}

默认情况下,Miuix 会自动选择适合当前系统设置的浅色或深色主题。

颜色系统

Miuix 的颜色系统是基于 HyperOS 设计语言创建的,提供了一套完整的颜色方案,包括:

  • 主色调(Primary colors)
  • 次要色调(Secondary colors)
  • 背景和表面色(Background and surface colors)
  • 文本色(Text colors)
  • 特殊状态颜色(如禁用状态)

主要颜色属性

以下是颜色系统中一些核心属性:

属性名描述用途
primary主色调开关、按钮、滑块等
onPrimary主色调上的文本颜色主色调上的文本
primaryContainer主色调容器包含主色调的容器组件
onPrimaryContainer主色调容器上的文本颜色主容器上的文本
secondary次要色调次要按钮、卡片等
onSecondary次要色调上的文本颜色次要色调上的文本
background背景色应用背景
onBackground背景上的文本颜色背景上的文本
surface表面色卡片、对话框等
onSurface表面色上的文本颜色常规文本
onSurfaceSecondary表面色上的次要文本颜色次要文本
outline轮廓线颜色边框、分割线
dividerLine分隔线颜色列表分隔线
windowDimming窗口遮罩颜色对话框、下拉菜单背景

使用颜色

在组合函数中,您可以通过 MiuixTheme.colorScheme 访问当前主题的颜色:

kotlin
val backgroundColor = MiuixTheme.colorScheme.background
val textColor = MiuixTheme.colorScheme.onBackground

Surface(
    color = backgroundColor,
    modifier = Modifier.fillMaxSize()
) {
    Text(
        text = "Hello Miuix!",
        color = textColor
    )
}

浅色和深色主题

Miuix提供了默认的浅色和深色主题颜色方案:

  • lightColorScheme() - 浅色主题的颜色方案
  • darkColorScheme() - 深色主题的颜色方案

文本样式

Miuix 提供了一套预定义的文本样式,以保持整个应用中文本的一致性:

样式名用途
main主要文本
title1大标题(32sp)
title2中标题(24sp)
title3小标题(20sp)
body1正文(16sp)
body2次要正文(14sp)
button按钮文本(17sp)
footnote1脚注(13sp)
footnote2小脚注(11sp)

使用文本样式

您可以通过 MiuixTheme.textStyles 访问当前主题的文本样式:

kotlin
Text(
    text = "这是一个标题",
    style = MiuixTheme.textStyles.title2
)

Text(
    text = "这是一段正文内容",
    style = MiuixTheme.textStyles.body1
)

自定义主题

您可以通过提供自己的 ColorsTextStyles 实例来全局自定义 Miuix 主题:

kotlin
// 自定义颜色方案
val customColors = lightColorScheme(
    primary = Color(0xFF6200EE),
    onPrimary = Color.White,
    background = Color(0xFFF5F5F5),
    // 其他颜色...
)

// 自定义文本样式
val customTextStyles = defaultTextStyles(
    title1 = TextStyle(
        fontSize = 36.sp,
        fontWeight = FontWeight.Bold
    ),
    // 其他文本样式...
)

// 应用自定义主题
MiuixTheme(
    colors = customColors,
    textStyles = customTextStyles
) {
    // 您的应用内容
}

跟随系统深色模式

为了自动跟随系统的深色模式切换,您应该使用 isSystemInDarkTheme() 函数:

kotlin
@Composable
fun MyApp() {
    val isDarkTheme = isSystemInDarkTheme()
    val colors = if (isDarkTheme) {
        darkColorScheme()
    } else {
        lightColorScheme()
    }
    
    MiuixTheme(colors = colors) {
        // 应用内容
    }
}

基于 Apache-2.0 许可发布