問題
??在使用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。