完美解決BottomNavigationView使用過程中遮蓋其他控件無法顯示的問題

問題

??在使用BottomNavigationView過程中,因為要自定義一個底部導航欄的控件,所以免不了會遇到:所添加的控件被BottomNavigationView給遮擋住,無法顯示,今天就來解決它。


傳送門

??項目完整代碼請查看我的這篇博客:如何優雅地使用BottomNavigationView實現底部導航欄+fragment切換效果


圖示

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。