可以通过以下几种方式实现:
public class NonSwipeableViewPager extends ViewPager {
private boolean swipeable;
public NonSwipeableViewPager(Context context) {
super(context);
swipeable = false;
}
public NonSwipeableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
swipeable = false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return swipeable && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return swipeable && super.onInterceptTouchEvent(event);
}
public void setSwipeable(boolean swipeable) {
this.swipeable = swipeable;
}
}
使用时,将布局文件中的ViewPager替换为NonSwipeableViewPager,并调用setSwipeable(false)方法禁用滑动。
ViewPager viewPager = findViewById(R.id.viewPager);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
int currentPosition = 0;
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (position != currentPosition) {
viewPager.setCurrentItem(currentPosition);
}
}
@Override
public void onPageSelected(int position) {
currentPosition = position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
public class MyPagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> fragments;
public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE;
}
}
使用时,创建MyPagerAdapter对象并设置给ViewPager。
以上是在ViewPager中禁用滑动的几种方法,根据具体需求选择适合的方式进行实现。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云