Подтвердить что ты не робот

Установите поле перетаскивания для Android Navigation Drawer

Я использую новый навигационный ящик в своем приложении. Это замечательно, за исключением того, что я не нашел простой способ установить, как ящик открыт. Поведение по умолчанию - это перетаскивание из левого края экрана для открытия. Это нормально, если в телефоне/таблице нет чехла, и край телефона не может быть затронут. Я хотел бы позволить пользователю касаться и перетаскивать с края экрана влево. Это легко установить с помощью других загрузочных библиотек nav (Sliding lib). Я не видел ничего с Google lib, к сожалению.

Существует метод onTouchEvent() для NavigationLayout, который может быть использован. Конечно, вы можете слушать все события касания и запускать openDrawer, но надеялся на простой способ с меньшим количеством кода. Любые идеи?

4b9b3361

Ответ 1

Здесь я нашел решение через размышления

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