2013-06-26 32 views
14

有什麼辦法讓支持包ViewPager以較短的拖動捕捉到下一頁?默認行爲似乎是,即使我拖動幾乎75%,當我放開時,頁面仍會回到上一頁。我希望縮短捕捉閾值,並使ViewPager捕捉到下一頁。使ViewPager以較短的阻力捕捉

請注意,這適用於拖動手勢。一個扔手勢已經需要更短的手勢。

回答

22

你可以做到這一點的ad-hoc,無需過分擔心ViewPager的內部,只要你想增加目標區:

private class MyPageChangeListener implements OnPageChangeListener { 
    private float mLastPositionOffset = 0f; 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     if(positionOffset < mLastPositionOffset && positionOffset < 0.9) { 
      mViewPager.setCurrentItem(position); 
     } else if(positionOffset > mLastPositionOffset && positionOffset > 0.1) { 
      mViewPager.setCurrentItem(position+1); 
     } 
     mLastPositionOffset = positionOffset; 
    } 
} 
+0

像魅力一樣工作。謝謝! – Juhani

+1

好主意,雖然我覺得有點奇怪 – astuetz

1

看起來這些值是在私有方法中硬編碼的,所以沒有簡單的方法來覆蓋它們。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/support/v4/view/ViewPager.java#2075

+3

正確的,但值AREN」 t 0.4/0.6f(因爲它們是截斷器)。我*認爲*它可以在兩個方向上達到ViewPager寬度的60%。 一次投擲只需要25次傾斜,速度爲400次/秒。 –

+0

@ChrisBanes當然你是對的,我只是很快就看到它 - 謝謝! – astuetz