BottomNavigationBar 是Google官方提供的用以实现底部菜单的控件,使用简单,项目里面也一直在用,想想还是记录下来。
首先添加依赖:
compile 'com.ashokvarma.android:bottom-navigation-bar:1.3.0'
布局:
<com.ashokvarma.bottomnavigation.BottomNavigationBar android:id="@+id/bottom_navigation_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" app:bnbAutoHideEnabled="false" app:bnbBackgroundColor="@android:color/black"></com.ashokvarma.bottomnavigation.BottomNavigationBar>
activity中代码:
bottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED); bottomNavigationBar .setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC ); bottomNavigationBar .addItem(new BottomNavigationItem(R.mipmap.ic_home, "首页").setActiveColorResource(R.color.car_model_checked)) .addItem(new BottomNavigationItem(R.mipmap.ic_find, "找车").setActiveColorResource(R.color.car_model_checked)) .addItem(new BottomNavigationItem(R.mipmap.ic_youhui, "优惠").setActiveColorResource(R.color.car_model_checked)) .addItem(new BottomNavigationItem(R.mipmap.ic_forum, "论坛").setActiveColorResource(R.color.car_model_checked)) .addItem(new BottomNavigationItem(R.mipmap.ic_mine, "我的").setActiveColorResource(R.color.car_model_checked)) .setFirstSelectedPosition(0) .initialise(); bottomNavigationBar.setTabSelectedListener(this);
当然如果你要做消息通知的话,类似于微信有消息来了会有消息数目通知,不用担心,这点谷歌给你想好了,只需要添加BadgeItem,具体使用如下:
BadgeItem numberBadgeItem = new BadgeItem() //.setBorderWidth(2)//通知框的边框大小 .setBackgroundColor(Color.RED)//通知的背景色 .setText("5") .setHideOnSelect(false);//选中时显示,这个可自动调整当然,不仅仅是上面的这些方法,比如设置字体等等,
上面添加一个方法就ok
.addItem(new BottomNavigationItem(R.mipmap.ic_home, "首页").setActiveColorResource(R.color.car_model_checked).setBadgeItem(numberBadgeItem ))
关于样式和格式可以自行设置:
bottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
bottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
@Override public void onTabSelected(int position) { //一般都是联合fragment一起使用,在此调用方法即可 //setFragment(position); } @Override public void onTabUnselected(int position) { setToolbar(position, false); } @Override public void onTabReselected(int position) { }
private void setFragment(int index) { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); switch (index) { case INDEX_HOME: HomeFragment homeFragment = HomeFragment.newInstance(); transaction.replace(R.id.panel, homeFragment); break; case INDEX_FIND: break; case INDEX_FORUM: break; case INDEX_COCESSION: break; case INDEX_USER: break; } transaction.commitAllowingStateLoss(); }
就是这么简单,赶快试试吧