您的位置:首页 > 移动开发 > Android开发

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

2017-10-19 11:21 1756 查看

前言

对于如下效果的侧边菜单栏,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”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 控件