Google Material You:如何使用与系统及谷歌应用一致的强调色?
解决方案
你不需要自定义实现,谷歌官方应用用的就是公开的系统动态强调色规则,你遗漏了色调阶的对应映射逻辑:
- 系统提供的
system_accent1_0到system_accent1_1000是完整的色调阶序列,数值越高颜色越深,system_accent1_0是接近白色的极浅色调,自然和官方应用的效果不符 - 官方应用统一用的是Material3规范定义的固定色阶映射:
- 浅色模式下ActionBar使用
system_accent1_600,FAB使用system_accent1_500 - 深色模式下ActionBar使用
system_accent1_200,FAB使用system_accent1_300
- 浅色模式下ActionBar使用
最简实现方式
不需要手动调用色值,直接使用Material Components库提供的主题属性即可:
- 确认应用主题继承自
Theme.Material3.DayNight系列 - ActionBar、FAB等组件直接引用主题属性
?attr/colorPrimary作为背景色 - 只要
targetSdkVersion≥31,系统会自动匹配动态强调色的对应色阶,效果和谷歌电话、Gmail等官方应用完全一致
常见排查点
如果还是无法匹配效果,可以检查以下配置:
- 确认没有关闭动态颜色适配,主题中不要添加
<item name="dynamicColor">false</item>配置 - 不要硬编码固定色值,始终通过主题属性引用,系统会自动适配深浅模式和用户自定义的强调色
- Android 12以下系统不支持动态强调色,库会自动 fallback 到你在主题中配置的固定主色

内容的提问来源于stack exchange,提问作者Waza_Be
相关产品推荐
相关产品推荐

