提供一个在窗口顶层显示,可从窗口边缘拖出的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方法来确定菜单是否为显示状态,之后确定执行滑出、隐藏操作。

DrawableLayout的更多相关文章

  1. drawableLayout的使用(转载讲的比较清晰的文章)

    创建drawbler的布局文件 初始化drawbler的列表 响应drawable列表点击事件 现在侧滑菜单使用很多,大都是通过SlidingMenu实现.现在也可以通过DrawerLayout 创建 ...

  2. ToolBar+Drawable实现一个好用的侧滑栏(侧边栏)和工具栏

    先参考下ToolBar的使用和DrawableLayout的使用: 1.主界面布局,主要结构包含一个ToolBar和一个DrawableLayout,DrawableLayout里面有左侧边栏布局和主 ...

随机推荐

  1. JavaScript 继承

    许多OO语言都支持两种继承方式,接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.由于在ECMAScript中,函数没有签名,无法实现接口继承,只支持实现继承,而且其实现继承主要 ...

  2. Mysql VARCHAR的最大长度到底是多少

    MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以上的版本中,varchar数据 ...

  3. Also unsere eigene Christian Louboutin Webshop bietet die überragende Christian Louboutin Schuhe uk schiebt zusammen mit kostengünstigen Wert

    www.heelschuhe.de, Es ist wirklich eine der Frauen erfordern immer interessant und auch Louboutin Pu ...

  4. c# 第一个实例 通哥

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. ov5648摄像头调试

    工作平台:MTK8389 sensor:ov5648 今天调试这颗摄像头的心得就是:首先得把上电时序弄对,I2C才能通讯,然后就是ID都要写对.

  6. Selenium+Python的环境配置

    因为项目的原因,最近较多的使用了UFT来进行自动化测试工作,半年没有使用Selenium了,于是在自己的电脑上重新配置了基于python3.x的selenium环境,配置过程大致如下: 1. Sele ...

  7. position窗口居中

    position的四个属性值: relative absolute fixed static 下面分别讲述这四个属性. <div id="parent">     &l ...

  8. spring 整合 spring mvc

    需要进行 Spring 整合 SpringMVC 吗 ? 还是否需要再加入 Spring 的 IOC 容器 ? 是否需要再 web.xml 文件中配置启动 Spring IOC 容器的 Context ...

  9. 用户、角色、权限三者多对多用hibernate的一对多注解配置

    用户.角色.权限三者多对多用hibernate的一对多注解配置 //权限表@Table(name = "p")public class P { @Id @GeneratedValu ...

  10. 为什么匿名内部类参数必须为final类型

    1)  从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自 ...