33

我在我的应用程序中使用新的导航抽屉。很好,只是我还没有找到一种简单的方法来设置抽屉的打开方式。默认行为是从屏幕的左边缘拖动以打开。这很好,除非手机/桌子上有保护套并且手机边缘无法触摸。我想让用户从屏幕的边缘触摸并拖动到左侧。这很容易与其他导航抽屉库(滑动库)一起设置。不幸的是,我没有看到任何与谷歌的库有关的东西。

可以使用 NavigationLayout 的 onTouchEvent() 方法。当然,你可以监听所有的触摸事件并触发一个 openDrawer,但希望有一个简单的方法,代码更少。有任何想法吗?

4

1 回答 1

69

在这里,我通过反射找到了解决方案

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
于 2013-07-23T06:06:20.270 回答