BottomNavigationView 基本用法

  1. 在点击事件中完成各个menu的点击事件,实现Fragment的替换,另外三个点击事件内容类似
// 去掉menu大于3个后的动画
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);

// 导航 menu 点击事件
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
     @Override
     public boolean onNavigationItemSelected(@NonNull MenuItem item) {
         switch (item.getItemId()){
             case R.id.download:
                  if(lastShowFragment!=0){
                      replaceFragment(lastShowFragment,0);
                      lastShowFragment=0;
                   }
                  break;
              case R.id.game:
                  break;
              case R.id.search:
                  break;
               case R.id.shopping:
                  break;
                }
              
              // 默认 false 
              // false 的话 下面颜色不会变化
               return true;
            }
        });
  1. 在 Activity 中 的 onCreate 中完成 Fragment 数组的装填,并在 Activity 中显示第一个 Fragment
/**
     * 初始化 Fragment 并在 Activity 中显示第一个 Fragment
     */
    private void initFragment(){

        fragments=new ArrayList<>();

        for(int i=0;i<4;i++){
            fragments.add(FruitFragment.
newFragment());
        }

        lastShowFragment=0;

        /**
         * 在 Activity 中加载第一个 Fragment
         */
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.relative_layout,fragments.get(0))
                .show(fragments.get(0))
                .commit();

        Log.d(TAG,"initFragment over");
    }
  1. 根据记录最后在 Activity 中显示的 Fragment 的变量 lastShowFragment ,和 menu 需要的 Fragment 完成替换
 /**
     * 替换 Activity 中的 Fragment
     * @param lastShowFragment
     * @param index
     */
    private void replaceFragment(int lastShowFragment,int index){
        FragmentTransaction transaction=getSupportFragmentManager().beginTransaction();
        transaction.hide(fragments.get(lastShowFragment));
        
        // 确认需要的 Fragment 是否已添加
        if(!fragments.get(index).isAdded()){
            transaction.add(R.id.relative_layout, fragments.get(index));
        }
        transaction.show(fragments.get(index)).commitAllowingStateLoss();

        Log.d(TAG,"replaceFragment  lastShowFragment : "+lastShowFragment+" index : "+index);
    }
  1. 效果


    Screenshot_1519977714.png
Screenshot_1519977720.png
Screenshot_1519977726.png
Screenshot_1519977732.png

小结

BottomBarLayout 第三方 可实现角标

BottomNavigationViewHelper 参考博客

BottomNavigationView + Fragment 参考博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容