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
相关产品推荐
相关产品推荐

