18

サポート パッケージ ViewPager を短いドラッグで次のページにスナップさせる方法はありますか? デフォルトの動作では、ほぼ 75% ドラッグしても、指を離すとページは前のページに戻ります。スナップしきい値を短くして、代わりに ViewPager を次のページにスナップさせたいと思います。

これはドラッグ ジェスチャに適用されることに注意してください。フリング ジェスチャには、すでにはるかに短いジェスチャが必要です。

4

4 に答える 4

24

You can do this ad-hoc, without worrying too much about the internals of ViewPager as long as you want to increase the target zone:

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;
    }
}
于 2013-06-26T14:05:33.160 に答える
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

于 2013-06-26T13:33:50.090 に答える