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

news2024/11/10 13:02:30

最近在研究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,可以确保不会有任何颜色被应用于图标,从而恢复图标本身的原始颜色。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1354650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 跨平台实现

Java 跨平台实现 1. Java虚拟机(JVM)2. 中间代码(字节码)3. Write Once, Run Anywhere (WORA)4. Java 标准库5. 安全性与隔离6. Java Community Process (JCP) Java 的跨平台性主要是通过以下几个关键机制来实现的: 1…

安克创新与火山引擎数智平台开展合作:数据分析降门槛 数据协同破边界

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,消费电子品牌安克创新与火山引擎数智平台(VeDI)达成合作,双方将聚焦安克创新大数据平台的海量数据分析场景&…

听GPT 讲Rust源代码--compiler(4)

File: rust/compiler/rustc_codegen_gcc/src/back/mod.rs rust/compiler/rustc_codegen_gcc/src/back/mod.rs 文件是 Rust 编译器的源代码中的一个模块,主要负责与 GCC(GNU 编译器集合)相关的后端代码生成。 在 Rust 编译器的架构中&#xff…

Laya游戏开发中AI寻路解决方案

1.AI自动寻路: 机器人代码重构,按照目标点去执行逻辑,提前几帧判断直线,非直线的情况下,预设转弯角度,角度判断到达直线后开始执行到目标点的逻辑 2.U3D布点寻路 3.NevMesh.Js寻路插件 NevMesh.Js你可以在L…

顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音 一、添加acl 打开ccadmin->点击配置文件->点击acl.conf->在</list>后面添加一条图中的信息->muqi是我自己设置的名字你们可以修改为自己需要的名字->添加好了点击提交XML->在运维调试点…

【数据仓库与联机分析处理】数据仓库

目录 一、数据仓库的概念 二、数据仓库与操作性数据库的区别 三、发展前期 四、数据仓库的系统结构 五、建模划分 六、主要案例 一、数据仓库的概念 目前很难给数据仓库&#xff08;Data Warehouse&#xff09;一个严格的定义&#xff0c;不准确地说&#xff0c;数据仓库…

C# A* 算法 和 Dijkstra 算法 结合使用

前一篇&#xff1a;路径搜索算法 A* 算法 和 Dijkstra 算法-CSDN博客文章浏览阅读330次&#xff0c;点赞9次&#xff0c;收藏5次。Dijkstra算法使用优先队列来管理待处理的节点&#xff0c;通过不断选择最短距离的节点进行扩展&#xff0c;更新相邻节点的距离值。Dijkstra算法使…

一分钟带你了解支持向量机(SVM)

支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种用于分类问题的监督算法。主要用于二分类和多分类问题。其基本思想是找到一个超平面&#xff0c;能够将不同类别的样本点尽可能地分开&#xff0c;并使得离超平面最近的样本点尽可能远离超平面&…

基于Vue的宿舍管理系统

基于Vue的宿舍管理系统资源-CSDN文库 基于 Koa 以及 VueJS 的宿舍管理系统。 新增功能&#xff1a; 【楼层管理】添加『入住人员信息』模块&#xff0c;显示入住学生、性别、院系、专业的人数&#xff0c;可用饼图表示【用户信息】学生用户添加性别、院系、专业字段【楼层管理…

大洋钻探系列之五“地球号”钻探船

​ “地球号”&#xff08;Chikyu&#xff09;是日本船舶科学技术中心为实施“21世纪海洋钻探规划” 而订造的一艘隔水管型深海钻探船&#xff0c; 主要用于对深海海底地质结构的勘探&#xff0c; 由三井造船工程公司所属的玉野船厂建造&#xff0c; 于2002年1月下水。该船在玉…

ant design pro 5 企业级后台前端框架自定义根路径设置,解决public文件夹下资源在打包部署后出现找不到的问题

关于ant design pro v5的开箱使用方法见&#xff1a;开箱即用的企业级数据和业务管理中后台前端框架Ant Design Pro 5的开箱使用和偏好配置-CSDN博客 在开发过程中为了方便我们可能会将部分静态资源如logo等放入public文件夹&#xff0c;但在设置站点根路径后&#xff0c;publi…

物联网开发点对点通信模式NFC和蓝牙如何无缝结合

随着物联网开发和智能手机的普及&#xff0c;NFC 技术作为一种新兴的技术正在被越来越多新款手机所采用。该技术的发展使得将 RFID 功能集成到手机的设想成为了可能。当前作为传统近距离通信的蓝牙技术也在不断地发展&#xff0c;传输速率跟过去相比也有大幅度的提高&#xff0…

python爬虫实现获取招聘信息

使用的python版本&#xff1a; 3.12.1 selenium版本&#xff1a;4.8.0 urllib版本&#xff1a;1.26.18 from selenium import webdriver from selenium.webdriver import ActionChains import timeimport re import xlwt import urllib.parsedef get_html(url):chrome_drive…

BDZL-V200 4G无线点对点互相传输终端

随着科技的不断进步&#xff0c;智慧产业正成为各行各业的发展趋势。在这个背景下&#xff0c;BDZL-V200&#xff08;简称V200&#xff09;作为一款基于4G无线网络全网通的数据点对点通信技术的无线数据互传终端产品&#xff0c;正式推出市场。该产品将为远方设备的监测、远程抄…

全面开花!聚铭网络入选《ISC 2023数字安全创新能力全景图谱》10大细分领域

日前&#xff0c;《ISC 2023数字安全创新能力全景图谱》重磅出炉&#xff0c;聚铭网络凭借多元化的产品和卓越的创新能力&#xff0c;成功上榜全景图10大细分领域&#xff0c;多项细分领域的入围再一次彰显了聚铭网络过硬的综合安全实力。 据悉&#xff0c;此次全景图是ISC平台…

【数据结构】循环队列(数组实现)

目录 一、循环队列定义 怎么使一个数组在逻辑上呈“环状”呢&#xff1f; 二、循环队列与顺序队列的差异 1、存储方式: 2、操作方式: 3、空间利用率&#xff1a; 4、循环队列判断队空的方式&#xff1a; 5、循环队列判断队满的方式 完整测试代码及注释&#xff1a; 总…

simulink代码生成(九)—— 串口显示数据(纸飞机联合调试)

纸飞机里面的协议是固定的&#xff0c;必须按照协议配置&#xff1b; &#xff08;1&#xff09;使用EasyHEX协议&#xff0c;测试int16数据类型 测试串口发出的数据是否符合&#xff1f; 串口接收数据为&#xff1a; 打开纸飞机绘图侧&#xff1a; &#xff08;1&#xff09…

常见网络协议

1.DNS协议 &#xff08;域名系统&#xff09; DNS协议使用的端口号是53 位于OSI模型中的应用层 DNS系统的作用&#xff1a;将域名&#xff08;网址&#xff09;解析为IP地址。 DNS的基本原理是&#xff1a;将域名映射到IP地址 DNS工作流程 当用户给定一个域名&#xff0…

实验笔记之——服务器链接

最近需要做NeRF相关的开发,需要用到GPU,本博文记录本人配置服务器远程链接的过程,本博文仅供本人学习记录用~ 连上服务器 首先先确保环境是HKU的网络环境(HKU AnyConnect也可)。伙伴已经帮忙创建好用户(第一次登录会提示重新设置密码)。用cmd ssh链接ssh -p 60001 <u…

综合跨平台全端ui自动化测试框架Airtest——AirtestIDE录制微信小程序脚本教学

前言 有在自动化测试领域的小伙伴应该都知道&#xff0c;app和小程序自动化这一类的自动化测试在实际操作中有时候很棘手让人心烦&#xff0c;动不动就是用appium写代码脚本维护什么的&#xff0c;不仅步骤繁琐&#xff0c;环境配置方面也是繁琐无比&#xff0c;动不动就与客户…