自定义控件Android解决Bug篇

完美解决BottomNavigationView使用过程中遮盖其

2020-09-26  本文已影响0人  千夜零一

问题

  在使用BottomNavigationView过程中,因为要自定义一个底部导航栏的控件,所以免不了会遇到:所添加的控件被BottomNavigationView给遮挡住,无法显示,今天就来解决它。


图示

BottomNavigationView覆盖ImageView.png

  这中间是我设置的图片,很明显被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。


大功告成!

底部导航栏.jpeg
上一篇下一篇

猜你喜欢

热点阅读