Android 手动撸一个不可滚动的ViewPager

在项目开发中有很多的场景要用到不可滚动的ViewPager。

管理:这个左右滑动的,能不能把滑动手势去掉?
开发:为什么要去掉,滑动的不好么?
管理:我想用户只能点上面的tab栏进行切换?
开发:好。

那么就会用到我们的自定义组件了,下面就让我们来手动撸一个把。

/**
 * 不可滚动的滑动视图
 * 继承自ViewPager
 * 实现自定义
 */
public class NoScrollViewPager extends ViewPager {
	/**
	 * 默认是可以进行滑动的
	 */
	private boolean isNoScroll = false;
	
	/**
	 * 复写构造方法
	 */
	 public NoScrollViewPager(Context context) {
	 	super(context);
	 }
	
	public NoScrollViewPager(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		if (isNoScroll) {
			return false;
		} else {
			return super.onTouchEvent(event);
		}
	}
	
	@Override
	public boolean onInterceptTouchEvent(MotionEvent event) {
		if (isNoScroll) {
			return false;
		} else {
			return super.onInterceptTouchEvent(event);
		}
	}

	@Override
	public void setCurrentItem(int item, boolean smoothScroll) {
		super.setCurrentItem(item, smoothScroll);
	}

	@Override
	public void setCurrentItem(int item) {
		super.setCurrentItem(item);
	}
	
	@Override
	public void scrollTo(int x, int y) {
		super.scrollTo(x, y);
	}

	public void setNoScroll(boolean isNoScroll) {
		this.isNoScroll = isNoScroll;
	}
}

使用方法更是简单

activity_no_scroll_layout.xml

	<com.example.test.NoScrollViewPager
		android:id="@+id/noScrollViewPager"
		android:layout_width="match_parent"
		<!-- 去掉滑动模式 -->
		android:overScrollMode="never"
		android:layout_height="match_parent" />

在代码中进行设置

noScrollViewPager.setNoScroll(true);

猜你喜欢

转载自blog.csdn.net/qq_24523279/article/details/90211267
今日推荐