侧边栏壁纸
博主头像
成云博主等级

行动起来,活在当下

  • 累计撰写 40 篇文章
  • 累计创建 25 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

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

佳航
2021-02-25 / 0 评论 / 0 点赞 / 1420 阅读 / 2487 字

从网上引用https://www.geek-share.com/detail/2719383265.html
对于如下效果的侧边菜单栏,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

评论区