参考网址:https://www.cnblogs.com/zhujiabin/p/7471665.html
1.点击TabLayout去除ViewPager的滑动效果
public class NoScrollViewPager extends ViewPager {
private boolean noScroll = false;
public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoScrollViewPager(Context context) {
super(context);
}
public void setNoScroll(boolean noScroll) {
this.noScroll = noScroll;
}
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
if (noScroll)
return false;
else
return super.onTouchEvent(arg0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (noScroll)
return false;
else
return super.onInterceptTouchEvent(arg0);
}
@Override
public void setCurrentItem(int item, boolean smoothScroll) {
super.setCurrentItem(item, smoothScroll);
}
@Override
public void setCurrentItem(int item) {
super.setCurrentItem(item, false);//表示切换的时候,不需要切换时间。
}
}
2.去除ViewPager的滑动效果,只可以通过点击TabLayout进行切换
public class BanViewPager extends ViewPager {
private boolean isCanScroll = true;
public BanViewPager(Context context) {
super(context);
}
public BanViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setNoScroll(boolean noScroll) {
this.isCanScroll = noScroll;
}
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
if (isCanScroll) {
return false;
} else {
return super.onTouchEvent(arg0);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (isCanScroll) {
return false;
} else {
return super.onInterceptTouchEvent(arg0);
}
}
}
注意:若使用此自定义ViewPager还会出现的左右移动bug,可在布局中添加
android:isScrollContainer="true"