问题
在使用BottomNavigationView过程中,因为要自定义一个底部导航栏的控件,所以免不了会遇到:所添加的控件被BottomNavigationView给遮挡住,无法显示,今天就来解决它。
传送门
项目完整代码请查看我的这篇博客:如何优雅地使用BottomNavigationView实现底部导航栏+fragment切换效果
图示
这中间是我设置的图片,很明显被BottomNavigationView给覆盖住了。
分析
我们在使用控件的时候,总是有两个必须填写的值,一个是width,一个是height,而它们分别对应我们印象中的物体的长度和宽度。当控件被遮盖住,这时候我们就需要指定控件的Z轴高度了。
何为Z轴高度?比如我们在三维空间中定义一个物体的具体位置,需要知道它的空间属性值,通过XYZ轴来精确定。这里的Z轴高度,其实就是指真正的“高度”,而不是宽度!
总结: 让添加的 ImageView在Z轴上的高度 大于等于 BottomNavigationView的。
解决方法
第一种方法:使用<……BottomNavigationView>标签将需要在导航栏之上显示的其他控件包起来,也就是其他控件在它的层级之下;
第二种方法:设置控件的Z轴高度,在我的测试中发现BottomNavigationView的默认Z轴高度为8dp,所以你设置控件的Z轴高度大于或等于8dp就可以显示在BottomNavigationView上了。
android:elevation="8dp"
第三种方法:在Activity中指定BottomNavigationView的Z轴高度。代码种设置其Z轴高度:
mNavigationView.elevation = 0f
第四种方法:直接在BottomNavigationView布局中使用
app:elevation="0dp"
跟其他控件同样的Z轴高度,因为默认的是:android:elevation="0dp",需要改为app。