BottomNavigationBar的一些坑和問題

最近做項目時想嘗試用一下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使用了,但事實卻是...


image.png

二、遇到的問題

  • 問題1

在step1導(dǎo)入的時候就遇到了一個問題,當(dāng)添加完依賴,Sync之后,立馬彈出了一個錯誤:
image.png

打開后跳到文件:
image.png
根據(jù)錯誤提示,應(yīng)該是找不到父樣式Body2,看到父樣式中有個AppCompat,我立馬想到了在新建項目時,取消了BackWards Compatibility(AppCompat)選項的勾選,如下圖
image.png

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

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

  • 問題2

step2中,在xml布局文件中使用BottomNavigation時,又遇到了一個錯誤:
image.png

這個錯誤時在預(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 ,可以下載下來研究一下。
最后,

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,234評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,662評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,282評論 6 342
  • 妞妞最近得了玉凈瓶~喊我:爸爸!“哎”“收”……我被她收進(jìn)去了!一會兒,她又喊我:好爸爸!“哎”“收”……又被收進(jìn)去了!
    欣欣然624閱讀 118評論 0 0
  • 5.20這天讀到一篇好文,村上春樹的《活得真實就好,愛與不愛,我們都沒有想象中重要》,看到標(biāo)題時,心一下就豁然開朗...
    橘子669閱讀 492評論 0 0

友情鏈接更多精彩內(nèi)容