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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:55:25