设置Android导航抽屉的拖动边距

时间:2013-06-07 16:12:51

标签: android navigation-drawer

我在我的应用中使用了新的导航抽屉。这很棒,除了我没有找到一个简单的方法来设置抽屉的打开方式。默认行为是从屏幕左边缘拖动到打开。这很好,除非手机/桌子上有一个外壳并且手机的边缘无法触及。我想允许用户从屏幕的边缘触摸并向左拖动。这很容易使用其他导航抽屉库(滑动库)设置。不幸的是,我还没有看到谷歌的lib。

可以使用NavigationLayout的onTouchEvent()方法。当然,您可以收听所有触摸事件并触发openDrawer,但希望以更少的代码轻松实现。有什么想法吗?

1 个答案:

答案 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