今天更新了sdk黑毅,驚奇的發(fā)現(xiàn)在support:design:25.2.0包下發(fā)現(xiàn)了一個好玩的新控件BottomNavigationView,我們先來看看廬山真面目吧
這不就是我們以前常用的tabhost或者radiobutton封裝就能實(shí)現(xiàn)嘛具帮,有何新奇的博肋。沒錯以前我們遇到這種類型經(jīng)常需要自己來封裝,當(dāng)現(xiàn)在只要我們依賴25以上的design包蜂厅,咱就可以直接使用goole跟我們提供的原生控件匪凡,豈不快哉。話不多說掘猿,開擼代碼病游。
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?android:attr/windowBackground"
app:menu="@menu/navigation"/>
然后再menu目錄先像平常我們使用menu一樣創(chuàng)建menu文件
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_home"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/bottom_title_room"/>
<item
android:id="@+id/navigation_discover"
android:icon="@drawable/ic_dashboard_black_24dp"
android:title="@string/bottom_title_discover"/>
<item
android:id="@+id/navigation_talk"
android:icon="@drawable/ic_notifications_black_24dp"
android:title="@string/bottom_title_talk"/>
</menu>
沒錯就是這么簡單,媽媽再也不用擔(dān)心俺要封裝radiobutton啦稠通。其中他還提供了監(jiān)聽回調(diào)方法setOnNavigationItemSelectedListener()
衬衬,默認(rèn)首次進(jìn)入是選中第一個的item的,我們可以通過navigation.getMenu().getItem(index).setChecked(true);
來設(shè)置我們需要選中的item改橘。另外滋尉,不知道大家有沒有注意到選中的item有變大的效果,沒錯在5.0以上系統(tǒng)版本飞主,才會有動畫效果狮惜。
注意:通過查看源碼發(fā)現(xiàn),其最多只能容納5個item碌识。
public static final int MAX_ITEM_COUNT = 5;
if (size() + 1 > MAX_ITEM_COUNT) {
throw new IllegalArgumentException(
"Maximum number of items supported by BottomNavigationView is " + MAX_ITEM_COUNT
+ ". Limit can be checked with BottomNavigationView#getMaxItemCount()");
}
補(bǔ)充:還有兩個屬性
<!--設(shè)置item圖標(biāo)顏色碾篡,因?yàn)樵搱D標(biāo)可以使用svg圖-->
app:itemIconTint="@android:color/holo_red_light"
<!--設(shè)置item字體顏色-->
app:itemTextColor="@android:color/holo_red_light"
當(dāng)然,我們也可以使用選擇器筏餐。