【Bug】Android BottomNavigationView 图标黑色色块问题

最近在研究Android Jetpack组件,在使用Navigation配合底部导航栏时,发现一个奇怪的问题,如下:

说明:图标来源于Iconfont开源图标库

我的第三个图标变成了一个黑色色块,这个问题前两天我遇见过,当时是三个图标全部变成黑色块,另一个demo中的三个图标就没事,综合今天这个部分黑色色块的情况,我觉得这是一个值得记录的问题,网上查了一下,有如下解释:

BottomNavigationView默认会根据当前主题的颜色来着色图标。

确实是这样的,因为本身我的三个图标也并非上图中的颜色,所以显然是BottomNavigationView给我的图标增加了着色,我的这个图标本身是这样的

带着疑问我打开了iconfont官网,准备更换一下图标的颜色

那我就明白了,问题处在这这张图标上了,我又对比了我的其他的图标

至此,我觉得真相大白了,困扰我的问题就解决了,这也许不算是什么bug,因为问题的根源在于图片本身,因为我本身不懂UI的设计,也不知道这种现象的本质是什么,只不过建议大家后面如果想要使用BottomNavigationView时,选择icon的时候,提前更改一下颜色试一下,要不然,这种问题解决起来也是很麻烦的,因为这个问题很小,往往费时间的问题都是小到容易被忽略的问题

但是另一种方法也是可以的,就是我不需要BottomNavigationView给我改色,实际项目中,因为每一个图标都是UI设计师精心设计好的,所以不使用这个特性应该是更常见的场景,也很简单

BottomNavigationView设置一个参数即可

复制代码
app:itemIconTint="@null"

但是经过我的测试,这并不起作用,最终解决的办法是

复制代码
binding.bottomNavigationView.itemIconTintList = null

也就是,在activity中动态的增加这个参数

关于这个问题,通义千问给的解释是

BottomNavigationView默认会根据主题的颜色控制其子项(包括图标和文字)的外观。当直接在XML中设置"@null"时,系统可能无法正确解析并应用这个值,而需要一个实际的着色状态选择器资源来改变或关闭图标的着色行为。

因此,在Java或Kotlin代码中显式地将itemIconTintList属性设为null,可以确保不会有任何颜色被应用于图标,从而恢复图标本身的原始颜色。

这应该是一个明了的解答,至此,本问题记录完毕,如果您有不同的见解或疑问,可以评论区共同探讨

相关推荐
T011561814 小时前
全栈项目实战手记|艺培场馆课时预约小程序底层安全、交互、分包全量迭代复盘
安全·小程序·bug·前端实战·全栈项目实战手记·小程序实战
我命由我123452 天前
Android Camera - 获取当前设备屏幕的旋转角度、保存帧到外部存储的私有空间
android·java·开发语言·java-ee·android jetpack·android-studio·android runtime
霍格沃兹测试学院-小舟畅学2 天前
DeepSeek Harness vs Claude Code:谁更会修Bug、跑测试?
bug
咖啡星人k2 天前
2026 AI 自动化测试:让 AI 帮你写用例、跑测试、修 Bug(MonkeyCode 云端实战)
人工智能·功能测试·单元测试·测试用例·bug·集成测试
我命由我123452 天前
Android 开发 - 获取当前设备屏幕的旋转角度
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
m0_749690232 天前
【寻迹校园 HarmonyOS NEXT 实战 37】一套 ArkUI 适配四档宽度:sm、md、lg、xl 响应式 Shell 实战
华为·harmonyos·arkui·navigation·响应式布局·多设备适配
我命由我123454 天前
人脸识别 - 判断人脸是否在画面中央
java·人工智能·python·java-ee·人脸识别·android jetpack·android runtime
Shadow(⊙o⊙)4 天前
Bug调试1.0
bug
T01156185 天前
艺培场馆课时预约小程序用户端 & 后台联动踩坑上篇(预约、课时、缓存、消息、学员端自身问题)
java·缓存·小程序·bug·全栈项目实战手记·艺培课时系统‘’
zone_z5 天前
07 · 等待事件与 OWI 方法:从 OSW 到 BUG 的完整破案实录
linux·数据库·oracle·ffmpeg·bug·troubleshooting