2013-07-25 92 views
13

有沒有辦法在滾動ViewPager的項目時鎖定ListView的垂直滾動?或者也許改變ViewPager的水平滾動靈敏度?禁用ListView滑動時滑動ViewPager

謝謝。

最後的編輯

這是我更新的解決方案。感謝您的回覆Masoud Dadashi,您的意見終於讓我想出瞭解決方案。

這裏是我的自定義的ListView類:

public class FolderListView extends ListView { 

    private float xDistance, yDistance, lastX, lastY; 

    // If built programmatically 
    public FolderListView(Context context) { 
     super(context); 
     // init(); 
    } 

    // This example uses this method since being built from XML 
    public FolderListView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // init(); 
    } 

    // Build from XML layout 
    public FolderListView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     // init(); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 

     switch (ev.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      xDistance = yDistance = 0f; 
      lastX = ev.getX(); 
      lastY = ev.getY(); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      final float curX = ev.getX(); 
      final float curY = ev.getY(); 
      xDistance += Math.abs(curX - lastX); 
      yDistance += Math.abs(curY - lastY); 
      lastX = curX; 
      lastY = curY; 
      if (xDistance > yDistance) 
       return false; 
     } 

     return super.onInterceptTouchEvent(ev); 

    } 
} 
+0

看看這個帖子http://stackoverflow.com/questions/7900860/viewpager-in -a-listview-how-to-lock-the-rolling-axis –

+0

謝謝,我會研究一下。 –

回答

7

肯定是有的。創建另一個customListView類從ListView的延伸並覆蓋其dispatchTouchEvent事件處理程序是這樣的:

@Override 
public boolean dispatchTouchEvent(MotionEvent ev){ 
    if(ev.getAction()==MotionEvent.ACTION_MOVE) 
     return true; 
    return super.dispatchTouchEvent(ev); 
} 

然後用這個代替customListView

+0

我試過你的解決方案,請檢查我的更新。 –

+1

我給你一個禁用滾動的例子,但顯然我不夠清楚。在該重寫的方法中,如果它是SWIPE,則應檢測手勢並禁用滾動。因爲代碼在下面的地址中可用,所以我不復制它。看看這個地址:http://stackoverflow.com/questions/2646028/android-horizo​​ntalscrollview-within-scrollview-touch-handling –

+0

我已更新我的文章,我遵循你的指示,並最終設法實現所需的功能。非常感謝! –