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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频号小店发展趋势如何?适合新手吗?

我是电商珠珠 视频号团队在22年7月发展了自己的电商平台-视频号小店。截止到目前为止,也发展了不过一年的时间,所以各项平台政策还不太严谨。 一个新兴平台所做的第一步就是招揽更多的商家来入驻,就会将红利全部倾向商家,而在今…

C++ 实现十大排序算法

教你手撕排序,这里有一个概念就是稳定排序。假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]r[j],且r[i]在r[j]之前&#…

申请企业通配符SSL证书流程

通配符SSL证书,又叫泛域名SSL证书,可以用一张SSL证书同时保护主域名以及主域名下的所有子域名。按照验证方式可以将通配符SSL证书分为DV通配符SSL证书和OV通配符SSL证书。其中OV通配符SSL证书只支持企事业单位申请,又称之为OV企业型通配符SSL…

[PyTorch][chapter 9][李宏毅深度学习][Why Deep]

前言: 我们知道深度学习一个重要特征是网络堆叠,深。 为什么需要深度, 本篇主要简单介绍一下该原因 目录: 1: 简介 2: 模块化分析 3: 语音识别例子 一 简介 有人通过实验,使用相同的网络参数…

【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

对比学习允许模型从未标记的数据中提取有意义的表示。通过利用相似性和不相似性,对比学习使模型能够在潜在空间中将相似的实例紧密地映射在一起,同时将那些不同的实例分开。这种方法已被证明在计算机视觉、自然语言处理 (NLP) 和强…

语义解析:连接自然语言与机器智能的桥梁

文章目录 01 语义解析的应用场景场景一:场景二: 02 语义解析和大模型的关系 语义解析技术可以提高人机交互的效率和准确性,在自然语言处理、数据分析、智能客服、智能家居等领域都有广泛的应用前景。特别是在大数据时代,语义解析能…

NX二次开发 Block UI 指定方位控件的应用

一、概述 NX二次开发中一般都是多个控件的组合,这里我首先对指定方位控件进行说明并结合选择对象控件,具体如下图所示。 二、实现功能获取方位其在选择面上原点的目标 2.1 在initialize_cb()函数中进行初始化,实现对象选择过滤面 //过滤平…

机器之心 AI 技术--人工智能助力个性化视频实战经验分享(文末送书)

【清华社&机器之心】视频生成前沿研究与应用特别活动 在视频生成即将迎来技术和应用大爆发之际,为了帮助企业和广大从业者掌握技术前沿,把握时代机遇,机器之心AI论坛就将国内的视频生成技术力量齐聚一堂,共同分享国内顶尖力量…

世微 AP6608 DC-DC转换器 1.2MHz 2-24V 2A升压转换IC

FEATURES? Integrated 80mΩ Power MOSFET ? 2V to 24V Input Voltage ? 1.2MHz Fixed Switching Frequency ? Internal 4A Switch Current Limit ? Adjustable Output Voltage ? Internal Compensation ? Up to 28V Output Voltage ? Automatic Pulse Frequency Modul…

LeetCode 225.用队列实现栈(详解) ૮꒰ ˶• ༝ •˶꒱ა

题目详情: 思路:1.定义两个队列用于存储栈的数据,其中一个为空。 2.对我们定义的栈进行入数据,就相当于对不为空的队列进行入数据。 3.对我们定义的栈进行删除,相当于取出不为空的队列中的数据放到为空的队列中&#x…

Android - CrashHandler 全局异常捕获器

官网介绍如下:Thread.UncaughtExceptionHandler (Java Platform SE 8 ) 用于线程因未捕获异常而突然终止时调用的处理程序接口。当线程由于未捕获异常而即将终止时,Java虚拟机将使用thread . getuncaughtexceptionhandler()查询该线程的UncaughtExceptio…

路由黑洞和黑洞路由的区别

路由黑洞: 路由黑洞是一种现象,一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象,就是汇总的时候有时会有一些不在内网中存在的网段,但是又包含在汇总后的网段中,如果在这个汇总的边界设备上同时还配…