2016-01-19 28 views

回答

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)

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);  
 
}

+0

什麼是X1和X2在你的情況? – fabiruu111

+0

臨時浮點變量,未用任何值初始化。 –