DrawerLayout是Support Library包中实现了侧滑菜单效果的控件
drawerLayout分为侧边菜单和主内容区两部分
* 侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性
* 主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)
实现:按照drawerLayout的规定布局方式写完布局,就能有侧滑的效果
* 1.DrawerLayout最好为界面的根布局,官网是这样说的,否则可能会出现触摸事件被屏蔽的问题;
* 2.主内容区的布局代码要放在侧滑菜单布局的前面, 因为 XML 顺序意味着按 z 序(层叠顺序)排序,并且抽屉式导航栏必须位于内容顶部;
* 侧滑菜单部分的布局(这里是ListView)必须设置layout_gravity属性,他表示侧滑菜单是在左边还是右边,而且如果不设置在打开关闭抽屉的时候会报错,设置了layout_gravity="start/left"的视图才会被认为是侧滑菜单
FrameLayout主内容占位的布局
ListView侧拉导航的布局
* android:layout_width="240dp"侧拉的宽度
* android:layout_gravity="start"或者left/right,,指定左侧还是右侧right,,,不设置不会打开
* android:choiceMode="singleChoice"单选模式
* android:background="#fff"
* 3.listView条目点击事件
点击事件中,可以替换fragment的显示
* contentFragment.setArguments(args); //让碎片携带上参数
* getSupportFragmentManager().replace(R.id.content_frame, new NewsFragment()).commit()
* drawLayout.closeDrawer(lv);关闭
drawerLayout.openDrawer(Gravity.LEFT);
* DrawerLayout.openDrawer方法用于展开侧边菜单
* 4.drawLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
onDrawerStateChanged(int arg0)
* 当 Drawer 状态发生变化时调用函数,
* drawer 有 3 种状态:
idle -- 表示与导航视图没有交互,静止
dragging -- 表示目前有与导航视图的交互,拖拽的状态
settling -- 表示有与导航视图的交互,并且导航视图正在关闭或打开
onDrawerSlide(View arg0, float arg1)
* 与导航视图交互时调用函数
onDrawerOpened(View arg0)
* 导航视图打开时调用函数
onDrawerClo