Android框架之路——NavigationView的使用(结合ToolBar)

参考博客:

  • Android框架之路——ToolBar的使用
  • Android5.0之NavigationView的使用

NavigationView简介:

Android Design Support Library 给开发者带来了一些重要的 Material Design 组件,并且向下兼容到 Android 2.1, Navigation View 就是其中之一,可用于方便地创建导航抽屉。

NavigationView在很多App上都已经可以看到其效果图,国内的比如知乎(侧拉菜单滑出来的那一部分属于NavigationView),还有Google自己的那些app,也基本全都采用了NavigationView。

实现效果

使用流程

  1. NavigationView要放在一个DrawerLayout中,现在给出我的activity_main.xml,LinearLayout就是一打开app显示出的布局,这里我是接着Android框架之路——RecyclerView的demo继续使用的,所以里面放了一个RecyclerView,同时也要加上ToolBar。其中android:layout_gravity="left"是让NavigationView收进左侧;

     
     
     
         
     
             
     
             
     
             
     
         
     
         
     
         
     
    
  2. 在NavigationView中,app:headerLayout="@layout/navigation_header"、app:menu="@menu/na_menu"的navigation_header.xml和na_menu.xml如下,na_menu.xml中group与group之间会有横线。这里给大家分享一个网站https://materialdesignicons.com/,里面的图标可以右键选择View Vector Drawable方式,然后再资源文件夹下新建drawable用就好了,非常好用;

    navigation_header.xml

     
     
     
         
     
         
     
     
    

    na_menu.xml

     
     
         
             
             
             
             
         
     
         
             
             
             
         
     
     
    
  3. 在MainActivity.java中,需要去实现功能;

    • 点击头部事件;

        mNavigationView = (NavigationView) findViewById(R.id.navigationView);
                mNavigationView.getHeaderView(0).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.i("mNavigationView", "head is clicked!");
                    }
                });
      
    • 设置条目点击事件;

        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                        switch (item.getItemId()){
                            case R.id.favorite:
                                Log.i("mNavigationView", "收藏 is clicked!");
                                break;
                            case R.id.wallet:
                                Log.i("mNavigationView", "钱包 is clicked!");
                                break;
                            case R.id.photo:
                                Log.i("mNavigationView", "相册 is clicked!");
                                break;
                            case R.id.file:
                                Log.i("mNavigationView", "文件 is clicked!");
                                break;
                            case R.id.about:
                                Log.i("mNavigationView", "关于 is clicked!");
                                break;
                            case R.id.share:
                                Log.i("mNavigationView", "分享 is clicked!");
                                break;
                            case R.id.setting:
                                Log.i("mNavigationView", "设置 is clicked!");
                                break;
                        }
                        return true;
                    }
                });
      
    • 设置toolbar的navigationIcon点击打开侧边栏事件;

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
      
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mDrawerLayout.openDrawer(mNavigationView);
            }
        });

你可能感兴趣的:(Android框架之路——NavigationView的使用(结合ToolBar))