最近做項目時想嘗試用一下BottomNavigationBar,按照官方的文檔使用時,遇到了不少坑,網(wǎng)上的解決方案也很少,經(jīng)過多次研究和嘗試后終于出坑,特意記錄一下。
一、首先看下官方給出的使用方式
-
step 1:導(dǎo)入
導(dǎo)入方式有三種,這里我使用了最簡單的一種,在app的gradle中添加依賴:
compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.3'
-
step 2:在xml布局文件中使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="demo.com.activity.MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<com.ashokvarma.bottomnavigation.BottomNavigationBar
android:id="@+id/bottom_navigation_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</LinearLayout>
-
step 3初始化:BottomNavigationBar
BottomNavigationBar bnb = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
bnb.addItem(new BottomNavigationItem(R.drawable.ic_home, "Home"))
.addItem(new BottomNavigationItem(R.drawable.ic_book, "Books"))
.addItem(new BottomNavigationItem(R.drawable.ic_music_note, "Music"))
.addItem(new BottomNavigationItem(R.drawable.ic_tv, "Movies & TV"))
.addItem(new BottomNavigationItem(R.drawable.ic_game, "Games"))
.initialise();
以上就完成了BottomNavigationBar的基本配置和初始化,不出意外的話,就可以開心愉悅的按照API使用了,但事實卻是...

二、遇到的問題
-
問題1



這個選項勾選上時,AS會自動引入V7包,我取消了勾選,因此就沒有自動引入。所以猜測可能是這個原因,因此需要手動導(dǎo)入V7包:

導(dǎo)入之后,果然這個錯誤就消失了。
-
問題2

這個錯誤時在預(yù)覽窗口底下提示的,根據(jù)錯誤提示,無法找到android.support.design.widget.CoordinatorLayout$Behavior這個類,導(dǎo)致BottomNavigationBar無法實例化,后來嘗試添加Material庫,修復(fù)了這個問題。
具體方式:在app的build.gradle中添加依賴:
compile 'com.android.support:design:26.0.0-alpha1'
-
問題3
在Step3初始化BottomNavigationBar時,編譯能夠正常通過,但一運行就崩潰,提示錯誤:
android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
這個錯誤不知道是什么原因?qū)е碌模?jīng)過網(wǎng)上的一番搜索也沒有得到答案,后來多次嘗試得出了兩個解決方法:
1.讓你的Activity繼承AppCompatActivity
2.在清單文件中,給使用了BottomNavigationBar的Activity加上一個AppCompat的主題,如:
android:theme="@style/Base.Theme.AppCompat"
以上兩種解決方法任選其一即可
在網(wǎng)上搜索問題3的時候,有一個解決方法是給Activity加上AppTheme主題,但不知道為什么我嘗試發(fā)現(xiàn)沒有效果。
三、總結(jié)
關(guān)于BottomNavigationBar的一些用法,可以參考官方的wiki:https://github.com/Ashok-Varma/BottomNavigation/wiki,由于項目目前正在開發(fā)中,就不貼源碼了。網(wǎng)上有一些不錯的源碼,比如:http://blog.csdn.net/qq_16131393/article/details/51419901 ,可以下載下來研究一下。
最后,
