DrawerLayout 和 NavigationView到底是什么?

可以在android studio上很快新建一个侧滑布局
DrawerLayout 抽屉布局

NavigationView 怎么翻译我也不清楚,导航栏?
那么它指的是那一部分呢?
点击侧滑按钮之后,出现的一个新页面,这个新页面就是 Navigation
(对照下方官方代码)


image.png

官方的DrawerLayout是这么写的




    

    
    


使用DrawerLayout要注意几点:

  1. 主内容视图一定要是DrawerLayout的第一个子视图。 就如官方代码的那样,app_bar_main是主内容视图,那么他一定要放到代码的第一个视图才行,放到前面。

  2. 主内容视图宽度和高度需要match_parent

  3. 必须显示指定侧滑视图的android:layout_gravity属性 android:layout_gravity = "start"时,从左向右滑出菜单 android:layout_gravity = "end"时,从右向左滑出菜单 不推荐使用left和right!!!

  4. 设置侧滑事件:mDrawerLayout.setDrawerListener(DrawerLayout.DrawerListener);

  5. 要说一点:可以结合Actionbar使用当用户点击Actionbar上的应用图标,弹出侧滑菜单! 这里就要通过ActionBarDrawerToggle,它是DrawerLayout.DrawerListener的具体实现类, 我们可以重写ActionBarDrawerToggle的onDrawerOpened()和onDrawerClosed()以监听抽屉拉出 或隐藏事件!

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();
    
  6. 如何隐藏 那个按钮(点击它滑出侧滑栏),将上面代码中的toolbar删掉, 他的默认是,只要你将toobar绑定到 drawer,那么你的toobar就会出现那个按钮。

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();
    
  7. 还有很多自定义的属性,详细设置。

  8. 这个DrawerLayout一定要配合Navigation吗?
    不!其实那个navigationView就是一个导航页面,由官方布局,命名,我们能用一个ListView来代替他的代码,实现差不多的功能。



    

    


image.png

所以,这个NavigationView只是一种布局格式,上面有header,下面是menu,看起来好看而已。

你可能感兴趣的:(DrawerLayout 和 NavigationView到底是什么?)