最近做项目的时候需要用到DrawerLayout做侧边栏,当然自己也可以通过用ViewDragHelper来实现侧边栏优点是可高度定制化,但是比较繁琐。而DrawerLayout是系统封装好的控件,用起来简单。DrawerLayout本身内部也会通过ViewDragHelper 实现的。言归正传,系统自带的DrawLayout只能实现从屏幕边缘滑出菜单,现在需求是全屏幕任何位置都能滑出。有两种方法可以实现:
方法一:.通过反射,改变DrawerLayout的一个私有属性mEdgeSize,调整滑动范围
该方法是stackfloweOver 上的,这里找不到原链接了
Field mDragger = null;
try {
mDragger = drawerLayout.getClass().getDeclaredField(
"mLeftDragger"); //mRightDragger for right obviously
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mDragger.setAccessible(true);
ViewDragHelper draggerObj = null;
try {
draggerObj = (ViewDragHelper) mDragger
.get(drawerLayout);
}