Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2194081
  • 博文数量: 866
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10638
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/landuochong

文章分类

全部博文(866)

文章存档

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(70)

2011年(103)

2010年(360)

2009年(283)

2008年(22)

分类: Android平台

2015-04-14 13:35:15

就是重写ViewPager的 onInterceptTouchEvent(MotionEvent arg0)方法和onTouchEvent(MotionEvent arg0)方法,这两个方法的返回值都是boolean类型的,只需要将返回值改为false,那么ViewPager就不会消耗掉手指滑动的事件了,转而传递给上层View去处理或者该事件就直接终止了。
  

public class MyViewPager extends ViewPager {
    // private static final String TAG = "ViewPager";
    //是否禁止左右滑动
    private boolean disableScroll=false;

    public MyViewPager(Context context) {
        super(context);
    }

    public MyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        // LogHelper.i(TAG, "MyViewPager dispatchTouchEvent, ");
        if (getParent() != null) {
            getParent().requestDisallowInterceptTouchEvent(true);
        }
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {
        if(disableScroll){
            return false;
        }
        return super.onInterceptTouchEvent(arg0);
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent arg0) {
        if (disableScroll)
            return false;
        else
            return super.onTouchEvent(arg0);
    }

    public boolean isDisableScroll() {
        return disableScroll;
    }

    public void setDisableScroll(boolean disableScroll) {
        this.disableScroll = disableScroll;
    }

}


阅读(5090) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册