众所周期,想要实现这个功能,使用官方组件是行不通的,需要自己改写。
①分析TabViewPager的滑动原理
通过各种方式扒拉源码,在ViewPager的类中找到控制Tab滑动事件函数onTouchEvent(MotionEvent ev),所以我们只需要重新继承这个类,Override一下onTouchEvent的方法,就可以根据自己的业务需求去改写啦。
②上码
public class MyScrllViewPager extends ViewPager {
private boolean isCanScroll = true;
private boolean singleScroll = true;
private Integer PageIndex = -1;
public MyScrllViewPager(Context context) {
super(context);
}
public MyScrllViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 设置其是否能滑动换页
* @param isCanScroll false 不能换页, true 可以滑动换页
*/
public void setScanScroll(boolean isCanScroll) {
this.isCanScroll = isCanScroll;
}
/**
* 设置某个tab不能滑动换页
* @param singleScroll false 禁止, true 不禁止
*/
public void setSingleScroll(boolean singleScroll) {
this.s