You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中Material 3颜色属性用法咨询及文档求助

Jetpack Compose Material Design 3 配色属性适用场景说明

Material Design 3(以下简称MD3)的lightColorScheme和darkColorScheme里的颜色属性,是按照界面元素的优先级、功能划分的,下面拆解常用属性的适用场景:

核心主色调组

  • primary:界面中优先级最高的交互元素使用,比如主操作按钮、选中状态的标签页、输入框的激活边框,是品牌色的核心体现,用来快速抓住用户注意力。
  • primaryContainer:作为次要强调元素的背景,比如选中的列表项背景、卡片容器背景,颜色比primary更柔和,既能区分元素,又不会抢主体内容的风头。
  • onPrimary / onPrimaryContainer:对应在primary/primaryContainer背景上显示的文字、图标颜色,保证足够对比度(深色背景用浅色文字,浅色背景用深色文字)。

辅助色调组

  • secondary:用于优先级稍低的辅助交互元素,比如图标按钮、次要操作按钮、未选中的标签页,和主色调形成区分,引导用户完成次要操作。
  • secondaryContainer:作为辅助元素的背景,比如次要卡片、侧边栏背景,视觉上比primaryContainer更淡,适合承载非核心内容。
  • onSecondary / onSecondaryContainer:对应背景上的文字、图标颜色,确保可读性。

特殊强调色调组

  • tertiary:用来标记特殊、非常规的交互元素,比如警告类按钮、特殊功能入口,或者需要和主、次要元素明显区分的内容,起到提醒用户关注特殊操作的作用。
  • tertiaryContainer:作为特殊内容的背景,比如提示框、高亮的通知卡片,既突出内容,又不会过于刺眼。
  • onTertiary / onTertiaryContainer:对应背景上的文字、图标颜色,保证对比度达标。

基础界面色调

还有几个通用属性也得提一下:

  • surface:大部分界面容器的默认背景,比如页面背景、普通卡片背景。
  • onSurface:surface背景上的常规文字、图标颜色。
  • error:错误状态元素使用,比如输入框错误提示文字、错误按钮背景。

简单使用示例

// 定义配色方案
val lightScheme = lightColorScheme(
    primary = Color(0xFF6750A4),
    primaryContainer = Color(0xFFEADDFF),
    secondary = Color(0xFF625B71),
    secondaryContainer = Color(0xFFE8DEF8),
    tertiary = Color(0xFF7D5260),
    tertiaryContainer = Color(0xFFFFD8E4)
)

// 在Compose组件中使用
Button(
    onClick = {},
    colors = ButtonDefaults.buttonColors(containerColor = lightScheme.primary)
) {
    Text("主操作按钮", color = lightScheme.onPrimary)
}

Card(
    colors = CardDefaults.cardColors(containerColor = lightScheme.tertiaryContainer)
) {
    Text("特殊通知内容", color = lightScheme.onTertiaryContainer)
}

内容的提问来源于stack exchange,提问作者Compose Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:12:22