ViewPager 禁止滑动

2017-01-14 10:23:03来源:http://www.jianshu.com/p/bebad3597981作者:HarryXR人点击

看到网上有千篇一律的解决方法,我亲测总结了两种方法
  public class TestViewpager extends ViewPager {    
public boolean isCanScroll=true;
public TestViewpager(Context context) {
this(context,null);
}
public TestViewpager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setCanScroll(boolean isCanScroll){
this.isCanScroll=isCanScroll;
}
//第一种
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(!isCanScroll){
return false;
}
return super.onTouchEvent(ev);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if(!isCanScroll){
return false;
}
return super.onInterceptHoverEvent(event);
}
//第二种
@Override
public void scrollTo(int x, int y) {
if(isCanScroll){
super.scrollTo(x, y);
}
}}

截断分发事件,这种方法适合viewpager嵌套使用
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(!isCanScroll){
return false;
}
return super.onTouchEvent(ev);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if(!isCanScroll){
return false;
}
return super.onInterceptHoverEvent(event);
}

返回false说明viewpager不消费该事件,当然无法执行了

2.ViewPager源码里实现就是靠scrollTo,解决它就ok了


     public void scrollTo(int x, int y) {    
if(isCanScroll){
super.scrollTo(x, y);
}
}}



最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台