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);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值