应用开启深色模式时ImageView内图片颜色发生反转如何解决?
问题原因
Android 12及更高版本系统内置了深色模式下自动适配图片的特性,对于没有明确禁用强制深色适配的图片资源,系统会默认对内容颜色做反转处理,目的是让浅色背景下的图标类内容在深色主题下也能清晰展示,黑白颜色反转就是该特性触发后的效果。
修复方案
- 方案1:针对单个ImageView禁用反转(优先推荐,改动最小)
在对应ImageView的XML布局代码中添加属性:android:forceDarkAllowed="false",即可明确告知系统不要对该ImageView内的图片内容执行强制色值反转。 - 方案2:针对单个页面禁用反转
如果需要整个页面的所有图片都不触发反转,可以在对应Activity的onCreate方法中添加如下代码:
// Java 写法 getWindow().setForceDarkAllowed(false);
// Kotlin 写法 window.setForceDarkAllowed(false)
- 方案3:全局禁用图片反转
如果整个App都不需要系统自动反转图片,可以在App全局主题的style配置中添加如下配置:
<item name="android:forceDarkAllowed">false</item>
注意该配置会全局生效,建议确认所有场景都不需要系统自动适配后再使用。
- 方案4:矢量图专用解决方案
如果你的图片是矢量图(VectorDrawable),也可以直接给矢量图根节点指定固定的tint色值,或者在代码中根据深浅模式分别设置对应色值,避免系统自动修改颜色。
效果对比
浅色模式下正常显示效果:
深色模式下异常显示效果:
内容的提问来源于stack exchange,提问作者theyash15
相关产品推荐
相关产品推荐



