如何设置Android Studio新建矢量资产默认tint适配深色模式
Vector Asset tint属性管控逻辑
Android Studio 矢量图的tint属性,直接由res -> New -> Vector Asset新建弹窗中的Color选项控制,没有藏在其他设置页的隐藏管控项。
你之前没手动配置却生成过tint="?attr/colorControlNormal"的图标,是因为部分Material Design系统图标本身自带主题属性引用,导入时会自动带入;如果导入的是本地SVG文件、或者选中了纯色填充的素材图标,弹窗就会默认填充硬编码的#000000黑色值,生成的图标自然不会跟随主题变色。
已生成图标的修复方式
已经导入的图标不需要重新新建,直接打开对应drawable目录下的矢量图XML文件,把vector根节点的硬编码tint值替换为主题属性即可:
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24" android:tint="?attr/colorControlNormal"> <!-- 原有path数据保持不变 --> </vector>
修改后图标会自动跟随主题的colorControlNormal色值切换,深色模式下自动变为浅色,不需要额外配置夜间模式资源。
新建图标默认配置方法
截至目前所有稳定版Android Studio,没有开放全局修改Vector Asset默认tint值的设置入口,要让新建图标默认带主题tint,有两个实操方案:
- 单次新建手动选择:每次打开Vector Asset弹窗后,点击Color旁的色值选择器,不要选纯色面板的黑色,切换到「Resources」分类,搜索选中
colorControlNormal,确认后生成的图标就会自动带上主题引用属性,不会硬编码黑色。 - 批量快速处理:如果已经导入了大量硬编码黑色的图标,不需要逐个文件修改,选中drawable目录调用全局查找替换:
- 查找内容:
android:tint="#000000" - 替换为:
android:tint="?attr/colorControlNormal"
把替换范围限定在drawable目录下的xml文件,一键就能完成所有图标的适配。
- 查找内容:
注意:如果部分图标需要固定显示特定颜色、不需要跟随主题变化,替换时注意排除这类文件,不要全局替换所有矢量图。
内容的提问来源于stack exchange,提问作者user1785730
相关产品推荐
相关产品推荐

