Pat*_*ick 32 android navigation-drawer
我在我的应用程序中使用新的导航抽屉.这很棒,除了我没有找到一个简单的方法来设置抽屉的打开方式.默认行为是从屏幕左边缘拖动到打开.这很好,除非手机/桌子上有一个外壳并且手机的边缘无法触及.我想允许用户从屏幕的边缘触摸并向左拖动.这很容易使用其他导航抽屉库(滑动库)设置.不幸的是,我还没有看到谷歌的lib.
可以使用NavigationLayout的onTouchEvent()方法.当然,您可以收听所有触摸事件并触发openDrawer,但希望以更少的代码轻松实现.有任何想法吗?
Max*_*mov 65
在这里,我通过反思找到了解决方案
DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
Field mDragger = mDrawerLayout.getClass().getDeclaredField(
"mLeftDragger");//mRightDragger for right obviously
mDragger.setAccessible(true);
ViewDragHelper draggerObj = (ViewDragHelper) mDragger
.get(mDrawerLayout);
Field mEdgeSize = draggerObj.getClass().getDeclaredField(
"mEdgeSize");
mEdgeSize.setAccessible(true);
int edge = mEdgeSize.getInt(draggerObj);
mEdgeSize.setInt(draggerObj, edge * 5); //optimal value as for me, you may set any constant in dp
Run Code Online (Sandbox Code Playgroud)