Android Jetpack Compose Material3 ColorScheme各属性使用指南咨询
Android Jetpack Compose Material3 ColorScheme 高效使用指引
Material3的ColorScheme是统一界面配色的核心,通过MaterialTheme.colorScheme可以快速为组件应用整套符合设计规范的颜色。下面是每个属性的具体使用场景建议:
ColorScheme( primary: Color, onPrimary: Color, primaryContainer: Color, onPrimaryContainer: Color, inversePrimary: Color, secondary: Color, onSecondary: Color, secondaryContainer: Color, onSecondaryContainer: Color, tertiary: Color, onTertiary: Color, tertiaryContainer: Color, onTertiaryContainer: Color, background: Color, onBackground: Color, surface: Color, onSurface: Color, surfaceVariant: Color, onSurfaceVariant: Color, surfaceTint: Color, inverseSurface: Color, inverseOnSurface: Color, error: Color, onError: Color, errorContainer: Color, onErrorContainer: Color, outline: Color, outlineVariant: Color, scrim: Color )
核心主色组
这组颜色是品牌识别的核心,用于界面中最关键的元素:
- primary:品牌的核心主色调,用来标记界面中最关键的交互元素,比如主按钮、选中态的标签栏、底部导航栏的当前项,确保用户一眼就能识别核心操作入口。
- onPrimary:在
primary颜色背景上显示的文字、图标颜色,必须保证足够的对比度,让内容清晰可读,比如主按钮上的文字。 - primaryContainer:主色的柔和变体(通常是主色降低饱和度/调整亮度后的颜色),用于需要突出但又不抢核心操作风头的区域,比如卡片背景、搜索结果的高亮项、选中的列表条目。
- onPrimaryContainer:在
primaryContainer背景上的文字、图标颜色,同样要保证对比度,比如高亮卡片内的标题文字。 - inversePrimary:用于反色背景(比如深色模式下的导航栏)上的主色文本/图标,确保在深色背景下主色内容依然清晰醒目。
辅助色组
用于区分次要交互和特殊强调元素:
- secondary:次要品牌色,用于非核心但常用的交互元素,比如浮动操作按钮(FAB)、次要按钮、筛选标签,平衡主色的视觉权重。
- onSecondary:在
secondary背景上的文字、图标颜色,保证内容可读性,比如次要按钮上的文字。 - secondaryContainer:次要颜色的柔和变体,用于次要交互的背景,比如侧边栏的选中项、次要卡片背景。
- onSecondaryContainer:在
secondaryContainer背景上的文字、图标颜色,比如次要卡片内的描述文本。 - tertiary:强调色,用于需要特殊关注的元素,比如提示标记、新功能入口、状态切换按钮(如收藏按钮),制造视觉焦点。
- onTertiary:在
tertiary背景上的文字、图标颜色,比如强调按钮上的文字。 - tertiaryContainer:强调色的柔和变体,用于强调区域的背景,比如通知卡片、特殊提示框的背景。
- onTertiaryContainer:在
tertiaryContainer背景上的文字、图标颜色,比如通知卡片内的内容文本。
背景与表面色组
定义界面的基础底色和容器底色:
- background:整个页面的基础背景色,是内容的承载底色,比如屏幕的空白区域。
- onBackground:在
background上显示的主要文字、图标颜色,比如页面正文、全局图标。 - surface:界面容器的背景色,比如卡片、对话框、卡片式列表项的背景,和
background可以接近但略有区分,营造层次。 - onSurface:在
surface容器上的文字、图标颜色,比如卡片标题、列表项文字。 - surfaceVariant:次要表面色,用于更次要的容器,比如侧边栏、分割面板、卡片的辅助区域,视觉权重比
surface更低。 - onSurfaceVariant:在
surfaceVariant上的文字、图标颜色,比如侧边栏的菜单文字。 - surfaceTint:给
surface类背景添加一层主色的染色效果,比如顶部AppBar的背景可以用surface+surfaceTint,既保持表面色的柔和,又带有品牌主色的色调。 - inverseSurface:反色表面色,用于需要突出的底部导航栏、底部弹窗背景,和常规背景形成对比。
- inverseOnSurface:在
inverseSurface上的文字、图标颜色,比如底部导航栏的图标和文字。
错误色组
用于标记错误状态和提示:
- error:错误状态的核心颜色,用于输入框的错误边框、错误图标、错误按钮,直接传递错误信息。
- onError:在
error背景上的文字、图标颜色,比如错误按钮上的文字。 - errorContainer:柔和的错误背景色,用于错误提示卡片、错误详情区域的背景,比
error更温和,适合展示错误说明文字。 - onErrorContainer:在
errorContainer背景上的文字颜色,比如错误提示卡片内的描述文本。
边框与遮罩组
用于分隔元素和添加遮罩效果:
- outline:标准边框色,用于输入框、卡片边框、分割线,清晰区分不同容器。
- outlineVariant:更柔和的边框色,用于次要分割线、弱边框场景,比如列表项的分隔线,视觉存在感更低。
- scrim:遮罩色,用于对话框、底部弹窗弹出时覆盖背景的半透明颜色,降低背景的视觉权重,突出弹窗内容。
内容的提问来源于stack exchange,提问作者Harya Kumuda
相关产品推荐
相关产品推荐

