解决DrawerLayout不能全屏滑动的问题

来源:互联网 发布:js中==和===的区别 编辑:程序博客网 时间:2024/05/16 06:21

前言

对于如下效果的侧边菜单栏,android SDK提供了DrawerLayout这个控件可以完美的实现,但是有一个问题,使用这个控件之后只能从左侧(或者右侧)边缘滑动才能显示菜单栏。
这里写图片描述

解决办法

如果想要全屏实现右滑出现菜单,只需要如下两步:

一、 添加下面的代码

private void setDrawerLeftEdgeSize (Activity activity, DrawerLayout drawerLayout, float displayWidthPercentage) {    if (activity == null || drawerLayout == null) return;    try {        // 找到 ViewDragHelper 并设置 Accessible 为true        Field leftDraggerField =                drawerLayout.getClass().getDeclaredField("mLeftDragger");//Right        leftDraggerField.setAccessible(true);        ViewDragHelper leftDragger = (ViewDragHelper) leftDraggerField.get(drawerLayout);        // 找到 edgeSizeField 并设置 Accessible 为true        Field edgeSizeField = leftDragger.getClass().getDeclaredField("mEdgeSize");        edgeSizeField.setAccessible(true);        int edgeSize = edgeSizeField.getInt(leftDragger);        // 设置新的边缘大小        Point displaySize = new Point();        activity.getWindowManager().getDefaultDisplay().getSize(displaySize);        edgeSizeField.setInt(leftDragger, Math.max(edgeSize, (int) (displaySize.x *                displayWidthPercentage)));    } catch (NoSuchFieldException e) {    } catch (IllegalArgumentException e) {    } catch (IllegalAccessException e) {    }}

二、调用这个方法

第一个参数传入当前的Activity,第二个参数传入drawerlayout的对象,最后一个参数 传 1,即可实现全屏滑动。如果你想让右侧菜单也是全屏,只要将对应的 “mLeftDragger” 改为 “mRightDragger”。

阅读全文
0 0
原创粉丝点击