ViewPager + Fragment 做底部导航是经常用到的一种方式。自带滑动切换和点击切换
但是如果老板有一天不想要滑动切换了。或者因为其他原因(与内部的滑动切换冲突了,且冲突不好处理)。那么怎么关闭ViewPager的滑动切换效果呢
其实很简单。重新ViewPager的内部方法不就行了。就是最简单的自定义View
public class MyViewPager extends ViewPager {
private boolean isCanScroll = false;
public MyViewPager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public void setScanScroll(boolean isCanScroll) {
this.isCanScroll = isCanScroll;
}
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
// TODO Auto-generated method stub
if (isCanScroll) {
return super.onTouchEvent(arg0);
} else {
return false;
}
}
@Override
public void setCurrentItem(int item, boolean smoothScroll) {
// TODO Auto-generated method stub
super.setCurrentItem(item, smoothScroll);
}
@Override
public void setCurrentItem(int item) {
// TODO Auto-generated method stub
super.setCurrentItem(item);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
// TODO Auto-generated method stub
if (isCanScroll) {
return super.onInterceptTouchEvent(arg0);
} else {
return false;
}
}
}
然后在Xml中使用自定义的MyViewPager代替原生的ViewPager就行了