studio programacion navegacion móviles desarrollo curso cambiar barra aplicaciones android navigation-drawer

programacion - Establecer el margen de arrastre para el Cajón de navegación de Android



manual de programacion android pdf (1)

Estoy usando el nuevo Cajón de navegación en mi aplicación. Es genial, excepto que no he encontrado una manera fácil de establecer cómo está abierto el cajón. El comportamiento predeterminado es arrastrar desde el borde izquierdo de la pantalla para abrir. Esto está bien, a menos que el teléfono / la mesa tenga una funda y no se pueda tocar el borde del teléfono. Me gustaría permitir que el usuario toque y arrastre desde un margen de la pantalla hacia la izquierda. Esto es fácil de configurar con otras librerías de cajones de navegación (Sliding lib). No he visto nada con la versión de Google desafortunadamente.

Hay un método onTouchEvent () para NavigationLayout que podría usarse. Por supuesto, podría escuchar todos los eventos táctiles y activar un OpenDrawer, pero esperaba una forma fácil con menos código. ¿Algunas ideas?


Aquí he encontrado una solución a través de reflexiones

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