Сделать привязку ViewPager с более коротким перетаскиванием
Есть ли способ сделать пакет ViewPager для поддержки на следующей странице с более коротким перетаскиванием? Поведение по умолчанию, по-видимому, состоит в том, что даже если я перетаскиваю почти 75%, страница отбрасывается на предыдущую страницу, когда я отпускаю. Я хотел бы сделать порог привязки короче и сделать привязку ViewPager к следующей странице.
Обратите внимание, что это применимо к жестом перетаскивания. Жесткий жест требует гораздо более короткого жеста.
Ответы
Ответ 1
Вы можете сделать это 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;
}
}
Ответ 2
Похоже, что эти значения жестко закодированы в приватном методе, поэтому нет простого способа их переопределить.
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/support/v4/view/ViewPager.java#2075