我想在右侧滑动时打开导航视图,无论右侧滑动在哪里。默认你必须在侧面做正确的滑动,但我想从中间滑动以打开导航视图
答案 0 :(得分:2)
你可以使用类似的东西来增加抽屉的滑动边缘
public static void increaseSwipeEdgeOfDrawer(DrawerLayout mDlSearchDrawer) {
try {
Field mDragger = mDlSearchDrawer.getClass().getDeclaredField(
"mRightDragger");//mRightDragger or mLeftDragger based on Drawer Gravity
mDragger.setAccessible(true);
ViewDragHelper draggerObj = (ViewDragHelper) mDragger
.get(mDlSearchDrawer);
Field mEdgeSize = draggerObj.getClass().getDeclaredField(
"mEdgeSize");
mEdgeSize.setAccessible(true);
int edge = mEdgeSize.getInt(draggerObj);
mEdgeSize.setInt(draggerObj, <size of the edge here>);
} catch (Exception e) {
e.printStackTrace();
}
}
或者您可以在顶部保留一个与抽屉布局大小相匹配的视图,在强硬的侦听器上指定它以检测滑动并在其上调用DrawerLayout#openDrawer(android.view.View)
答案 1 :(得分:0)
您需要@override onTouchEvent(MotionEvent event)
并且可以检测抽屉活动中的右侧滑动,然后打开抽屉。
@Override
public boolean onTouchEvent(MotionEvent event)
{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
x1 = event.getX();
break;
case MotionEvent.ACTION_UP:
x2 = event.getX();
float deltaX = x2 - x1;
if (Math.abs(deltaX) > MIN_DISTANCE)
{
// Left to Right swipe action
if (x2 > x1)
{
Toast.makeText(this, "Left to Right swipe [Next]", Toast.LENGTH_SHORT).show ();
drawer.openDrawer(); //OPEN YOUR DRAWER HERE
}
}
else
{
// consider as something else - a screen tap for example
}
break;
}
return super.onTouchEvent(event);
}