我在我的应用中使用了新的导航抽屉。这很棒,除了我没有找到一个简单的方法来设置抽屉的打开方式。默认行为是从屏幕左边缘拖动到打开。这很好,除非手机/桌子上有一个外壳并且手机的边缘无法触及。我想允许用户从屏幕的边缘触摸并向左拖动。这很容易使用其他导航抽屉库(滑动库)设置。不幸的是,我还没有看到谷歌的lib。
可以使用NavigationLayout的onTouchEvent()方法。当然,您可以收听所有触摸事件并触发openDrawer,但希望以更少的代码轻松实现。有什么想法吗?
答案 0 :(得分: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