BottomNavigationView奇怪的选中背景

1,165 阅读2分钟

#引言 闲来无事的情况下,打算尝试一下Google的一些新控件。所以新建了一个项目,在把所有环境都配置好之后,常用的BottomNavigationView出现了一个非常奇怪的问题,底部menu出现了一个奇怪的选中背景,而这个背景并不是我做了什么设置出现。同样的代码移植到老工程也并没有出现。 现象

使用的MD版本是

implementation 'com.google.android.material:material:1.6.1'

开始以为是个简单的问题,但是全网搜索之后却发现没有相关文章,于是研究了一下这个问题。

##开始解决

  • 首先就是先找到这是哪里加的背景,打开布局显示之后明显能发现,在我自己设置的icon确实周围多了一圈椭圆的背景,这就证明了不是我自己写的drawable的问题。 分析布局

众所周知,BottomNavigationView中每个子item都是一个NavigationBarMenuView,所以接下来需要去看NavigationBarMenuView中这个背景是加在哪里了

  • 本来看着NavigationBarMenuView的代码不多,准备是读一下来的,直到我在这个view的参数中发现了 活动指示灯

按照Google在MD工具中一罐6的命名做法,是这个东西无疑了,顺着这个参数找到API方法

bottomNavigationView.isItemActiveIndicatorEnabled = false

设置之后运行 完美

  • 问题虽然解决了,但是又出现另外一个问题,这个控件为啥在老工程中没有这个问题。

默认theme 过程就不说了,直接说原因吧,BottomNavigationView的默认背景中包含了这个指示灯的问题。所以解决方案除了在代码中设置外,还可以直接修改默认主题解决

默认主题 同样能解决这个问题

##后记

  • 其实这不算是一个太复杂的问题,但是全网竟然没有搜索到什么有用的文章,看来国内距离全面使用MD控件还是有很长的距离啊。