提供一个在窗口顶层显示,可从窗口边缘拖出的container组件。
DrawableLayout本身作为整个容器,先进行默认显示内容的布局,再进行拖出菜单的内容布局。也就是一个DL包含两个或三个子控件,第一个子控件是默认布局,显示在下层;第二、三个子控件是菜单布局(方向不同),默认不显示,划出时显示在上层。
通过子控件(菜单本身)的layout_gravity控制控件从何方向被拖出。
子控件2、3 以下称 菜单控件
的layout_gravity来决定其滑出位置,right (start)/ left(end);不可用top,bottom,这两个属性将导致应用崩溃。注意:编辑时编辑器可能不会提示layout_gravity属性,需要自己打出。
菜单控件的宽度设置为match时,为系统默认宽度,划出时大概占整个屏幕宽度的4/5;设置为warp时,内容依然会自适应。
DrawerListener 可以监听菜单的滑出状态。
onDrawerStateChanged 菜单视图绘制状态变化的回调,1、2为正在绘制,此时尽量不要进行比较消耗性能的操作,不然滑动将会卡顿。0为没有执行绘制。
onDrawerSlide 菜单滑动的回调,回调的参数为当前菜单视图所显示的宽度与其全宽的的比例,1为全部显示,0为隐藏。
onDrawerClosed 如其名,菜单关闭时回调。
onDrawerOpened 同上如其名。
SimpleDrawerListener提供单一的回调重写,未重写部分将不做任何操作。
DrawableLayout 的 closeDrawer 、openDrawer方法可以主动控制菜单的状态 这两个方法需要接收一个int参数(GravityCompat的start、end,不能用right,left) 以确定要滑动的菜单视图,当该参数与xml中菜单控件的gravity不一致时(如left/start与 end)也将抛出异常应用崩溃。
如果在默认视图里增加按钮通过点击来控制菜单的滑出的话,请注意,当菜单为滑出状态时点击空白区域,将会导致菜单隐藏。可以再点击监听中直接使用isDrawerVisible方法来确定菜单是否为显示状态,之后确定执行滑出、隐藏操作。