我在我的应用程序中使用了新的导航抽屉。很棒,但是我还没有找到一种简单的方法来设置抽屉的打开方式。默认行为是从屏幕的左边缘拖动以打开。很好,除非手机/桌子的 shell 打开并且无法触摸手机的边缘。我想允许用户触摸并从屏幕的边缘向左拖动。使用其他导航抽屉库(滑动库)很容易设置。不幸的是,我还没有看到关于Google lib的任何信息。

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

最佳答案

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

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

关于android - 设置Android抽屉导航的拖动边距,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16988597/

10-09 07:54