一、使用自定義ViewPager實現阻止滑動
通過自定義ViewPager,我們可以重寫其onTouchEvent()和onInterceptTouchEvent()方法來實現阻止ViewPager的滑動。
public class CustomViewPager extends ViewPager {
private boolean isPagingEnabled = true;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.isPagingEnabled && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return this.isPagingEnabled && super.onInterceptTouchEvent(event);
}
public void setPagingEnabled(boolean b) {
this.isPagingEnabled = b;
}
}
在setPagingEnabled()方法中,我們可以控制ViewPager的滑動功能。
二、使用addOnPageChangeListener實現阻止滑動
我們可以通過實現addOnPageChangeListener()方法,並在onPageScrolled()中控制ViewPager的滑動來實現阻止ViewPager的滑動功能。
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//阻止ViewPager的滑動
viewPager.scrollTo(0, 0);
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
在onPageScrolled()方法中,我們控制ViewPager的滑動,返回(0,0)可以阻止ViewPager的滑動。
三、修改ViewPager的滑動速度實現阻止滑動
我們可以修改ViewPager的滑動速度來實現阻止ViewPager的滑動,即將滑動速度設置為0。
public class CustomScroller extends Scroller {
private int mDuration = 0;
public CustomScroller(Context context) {
super(context);
}
public CustomScroller(Context context, Interpolator interpolator) {
super(context, interpolator);
}
public CustomScroller(Context context, Interpolator interpolator, boolean flywheel) {
super(context, interpolator, flywheel);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
super.startScroll(startX, startY, dx, dy, mDuration);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy) {
super.startScroll(startX, startY, dx, dy, mDuration);
}
public void setScrollDuration(int duration) {
mDuration = duration;
}
}
通過自定義Scroller,我們可以修改ViewPager的滑動速度,將其設置為0即可阻止ViewPager的滑動。使用時,我們需要在ViewPager中設置CustomScroller。
四、禁用ViewPager的滑動功能實現阻止滑動
我們可以使用setUserInputEnabled()方法,禁用ViewPager的滑動功能。
viewPager.setUserInputEnabled(false);
此方法會禁用ViewPager的滑動功能,從而實現阻止ViewPager的滑動。
原創文章,作者:WEYW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/146086.html