現在可能很多人實現類似微信界面結構更多是使用tablayout+viewpager(嵌套fragment),目前谷歌出現了BottomNavigationView這個控件,本篇文章將介紹其具體的使用,也歡迎大家互相討論:
話不多說先上效果圖:
Screenshot_2016-10-25-00-29-57-581_com.example.b9.png
1、在 build.gradle 文件中增加依賴:
compile 'com.android.support:design:25.0.0'
2、布局:
<android.support.design.widget.BottomNavigationView
android:id="@+id/bnv_mainactivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorAccent"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
app:menu="@menu/bottom">
</android.support.design.widget.BottomNavigationView>
3、menu菜單項:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:icon="@drawable/ic_account_balance_black_24dp" android:title="主頁" />
<item android:icon="@drawable/ic_account_balance_wallet_black_24dp" android:title="錢包" />
<item android:icon="@drawable/ic_add_shopping_cart_black_24dp" android:title="購物" />
<item android:icon="@drawable/ic_account_circle_black_24dp" android:title="我的" />
</menu>
4、activity中使用:
@BindView(R.id.bnv_mainactivity)
BottomNavigationView bnvMainactivity;
@BindView(R.id.activity_main)
RelativeLayout activityMain;
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
bnvMainactivity.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
setTitle(item.getTitle());
return true;
}
});
}
5、注意:
底部導航欄高度默認是 56dp。
菜單元素只能是 3~5 個。如果個數少于3個或者多于5個,則會報錯。
icon 的選中顏色默認是 @color/colorPrimary。當然你也可以使用app:itemIconTint="@android:color/white"來自定義,這樣定以后,所有的 icon 顏色都是這個了。
菜單元素文字的默認顏色是 @color/colorPrimary。你可以使用app:itemTextColor="@android:color/white"自定義。
底部導航欄背景顏色默認是當前樣式的背景色(白色/黑色),你可以使用app:itemBackground="@android:color/black"來更改。