简介
Navigation Drawer是在 Material Design 中推出的一种侧滑导航菜单栏控件。包含两个部分,一部分是侧滑(DrawerLayout),一部分是导航菜单栏(NavigationView)。
AS新建
利用Android Studio可以快速建立这个控件
- 在新建项目时,在最后选择Navigation Drawer Activity
- 在新建Activity时,选择Navigation Drawer Activity
DrawerLayout
DrawerLayout布局中,由两部分组成,一部分是内容布局,一部分是侧滑菜单布局。其中侧滑菜单布局通过设置 “android:layout_gravity” 属性,来控制是左侧滑,还是右侧滑。参考实例代码
1 | <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" |
至此,侧滑效果就实现了。
DrawerLayout中也有一些常会用到的方法,来控制例如打开、关闭菜单,监听滑动事件等,这里暂时列举一些,还是得多看api和源码。
1 | //打开左侧菜单,同理右侧就是 GravityCompat.END |
NavigationView是兼容包中提供用来实现导航菜单控件。使用menu资源填充数据,可以更简单高效的实现导航菜单。
添加依赖
1 | compile 'com.android.support:design:24.1.0' |
布局中引用
1 | <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" |
NavigationView分为两部分,一部分是headerLayout,一部分是menu。headerLayout就是对应菜单的顶部部分,一般用来显示用户信息什么的,menu则对应实际的菜单选项。
定义headerLayout
1 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
1 | <menu xmlns:android="http://schemas.android.com/apk/res/android"> |
这样NavigationView就添加成功,效果如下:
直接使用 NavigationView 的 setNavigationItemSelectedListener() 方法即可
1 | navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { |
总结
Navigation Drawer的用法还是比较简单的,但是NavigationView的封装性太高,个人觉得不是特别实用,相对自己定义界面可能来的比较方便,或许是自己用的不到家。
关于抽屉效果,个人觉得目前而言随着手机的屏幕越来越大,导致用户操作起来不是很方便,现在主流的设计还是底部导航栏。