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

如何在Android XML中引用Material Design 3的Tokens/颜色

在Android XML中使用Material Design 3动态颜色与Design Tokens

1. 确认主题已启用Dynamic Colors

你的主题必须继承支持动态颜色的Material 3主题,或者手动开启动态颜色功能:

<!-- res/values/styles.xml -->
<style name="AppTheme" parent="Theme.Material3.DynamicColors.DayNight">
    <!-- 自定义主题配置 -->
    <item name="colorPrimary">@color/md_theme_light_primary</item>
    <item name="colorOnPrimary">@color/md_theme_light_onPrimary</item>
    <!-- 如需手动覆盖Token,可在此引用系统Token或自定义颜色 -->
    <item name="colorSurfaceContainer">@color/md_sys_color_surface_container</item>
</style>

如果是自定义主题未直接继承动态主题,需添加以下配置开启动态颜色:

<item name="android:enableDynamicColors">true</item>

2. 在布局XML中引用主题属性

Material 3已将Design Tokens映射为主题属性,无需直接写md.sys.color.surface-container,直接使用对应的?attr/引用即可:

示例:给布局设置Surface Container背景

<!-- res/layout/your_layout.xml -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?attr/colorSurfaceContainer">

    <!-- 子View内容 -->
</LinearLayout>

常用Surface系列Token与主题属性对应关系:

  • md.sys.color.surface → ?attr/colorSurface
  • md.sys.color.surface-container-low → ?attr/colorSurfaceContainerLow
  • md.sys.color.surface-container-high → ?attr/colorSurfaceContainerHigh

3. 验证动态效果

运行应用后,系统主题(浅色/深色切换)或动态颜色(基于壁纸变化)更新时,View背景会自动同步切换,实现动态效果。

注意事项

  • 确保项目依赖最新版Material 3库:
    implementation 'androidx.material:material:1.11.0' // 或更高版本
    
  • 如需自定义Token颜色值,可在res/values/colors.xml中定义后,在主题里引用覆盖默认动态值:
    <color name="md_sys_color_surface_container">#...</color>
    

内容的提问来源于stack exchange,提问作者Mustansar Saeed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:52:37