Google终于推出了自己风格的底部导航栏,对于android开发人员来说是一个福音。
怎么样,是不是还行,其实使用起来也非常简单,下面跟着我来做吧!
添加依赖:
compile 'com.ashokvarma.android:bottom-navigation-bar:1.3.1'
布局文件:
<com.ashokvarma.bottomnavigation.BottomNavigationBar
android:id="@+id/bottom_navbar"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true"/>
生成导航栏的每一个item:
BottomNavigationBar navbar = (BottomNavigationBar) findViewById(R.id.bottom_navbar);
//生成BottomNavigationBar中的每一个item
BottomNavigationItem item1 = new BottomNavigationItem(R.mipmap.ic_home,"home");
BottomNavigationItem item2 = new BottomNavigationItem(R.mipmap.ic_chat,"chat");
BottomNavigationItem item3 = new BottomNavigationItem(R.mipmap.ic_user,"user");
//将item添加到BottomNavigationBar中
navbar.addItem(item1);
navbar.addItem(item2);
navbar.addItem(item3);
设置点击、未点击、和背景色:
//统一设置点击颜色
navbar.setActiveColor(R.color.colorAccent);
//统一设置未点击颜色
navbar.setInActiveColor(R.color.colorWhite);
//统一设置BottomNavigationBar的背景色
navbar.setBarBackgroundColor(R.color.colorBlue);
设置BottomNavigationBar的mode和style
//设置BottomNavigationBar的模式
navbar.setMode(BottomNavigationBar.MODE_FIXED);
//设置背景样式
navbar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
这里要说明一下,mode分为MODE_FIXED和MODE_SHIFTING。
MODE_FIXED:常规模式,正常的点击反馈效果;
MODE_SHIFTING:动画模式,点击时会有滑动效果,未选中item只显示icon,不显示文字。BackgroundStyle分为BACKGROUND_STYLE_STATIC和BACKGROUND_STYLE_RIPPLE。
BACKGROUND_STYLE_STATIC:正常背景样式,在此样式下,setActiveColor是点击时文字颜色,setInActiveColor是未点击时文字颜色,setBarBackgroundColor为背景色;
BACKGROUND_STYLE_RIPPLE:波纹效果,不同的是在此样式下,setActiveColor为背景色,setInActiveColor是未点击时文字颜色,setBarBackgroundColor是点击时文字颜色。
(具体可以看我的demo效果)
生成BottomNavigationBar:
navbar.initialise();
ok,到这里BottomNavigationBar就乖乖的出现在了屏幕中,下面我来学习一些拓展用法:
设置选中监听:
navbar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() {
//item变为选中回调
@Override
public void onTabSelected(int position) {
}
//item变为未选中回调
@Override
public void onTabUnselected(int position) {
}
//item再次变为选中回调
@Override
public void onTabReselected(int position) {
}
});
清空所有item:
navbar.clearAll();
/**
* 获得一个导航图标右上角的标记,例如 未读消息
*
* @param borderWidth 边距
* @param text 内容
* @param hideOnSelect 点击时是否显示标记
*/
private BadgeItem initBadge(int borderWidth, String text, boolean hideOnSelect) {
return new BadgeItem()
.setBorderWidth(borderWidth)
.setBackgroundColorResource(R.color.colorAccent)
.setText(text)
.setHideOnSelect(hideOnSelect);
}
让BottomNavigationBar结合fragment使用也是非常方便的,可以参考我的项目,里面可以学到一个app架构的搭建,以及目前最火的各种框架使用场景:https://github.com/18973809797/BaseStorehouse
如果只是单纯想了解BottomNavigationBar,可以看这个demo地址:
https://github.com/18973809797/BottomNavigationBarDemo