美文网首页
RecyclerView嵌套ViewPager冲突,viewpa

RecyclerView嵌套ViewPager冲突,viewpa

作者: fsnzzz | 来源:发表于2018-11-08 11:56 被阅读0次

    Recyclerview嵌套viewpager,手指按在viewpager上向上滑动无效(首页banner轮播)。
    继承ViewPager重写onTouchEvent()方法,对viewpager进行分发处理。

    首先获取手指触摸位置
    判断viewpager的滑动方向,
    if是上下滑动交给父布局处理
    if左右滑动拦截下来自己处理

      PointF downP = new PointF();
        PointF curP = new PointF();
        private float xDown;// 记录手指按下时的横坐标。
        private float xMove;// 记录手指移动时的横坐标。
        private float yDown;// 记录手指按下时的纵坐标。
    
    
     @Override
        public boolean onTouchEvent(MotionEvent ev) {
            // 每次进行onTouch事件都记录当前的按下的坐标
            curP.x = ev.getX();
            curP.y = ev.getY();
            if (ev.getAction() == MotionEvent.ACTION_DOWN) {
              
                downP.x = ev.getX();
                downP.y = ev.getY();
    
                xDown = ev.getX();
                yDown = ev.getY();
    
                // 此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰
                getParent().requestDisallowInterceptTouchEvent(true);
            }
    
            //移动的时候进行判断
            if (ev.getAction() == MotionEvent.ACTION_MOVE) {
    
                xMove = ev.getX();
                float yMove = ev.getY();
                // 这里判断是横向还是纵向移动,
                if (Math.abs(yMove - yDown) < Math.abs(xMove - xDown) && Math.abs(xMove - xDown) > 2) {
                    // 横向滑动的处理
                    if (Math.abs(xMove - xDown) > 2) {
                        // 左右滑动的时候进行拦截,自己处理
                        getParent().requestDisallowInterceptTouchEvent(true);
                    } else {
                        // 自己进行处理,不在上传给父布局
                        return false;
                    }
                } else {
                    // 父布局进行事件拦截
                    getParent().requestDisallowInterceptTouchEvent(false);
                }
            }
            return super.onTouchEvent(ev);
        }
    
    

    相关文章

      网友评论

          本文标题:RecyclerView嵌套ViewPager冲突,viewpa

          本文链接:https://www.haomeiwen.com/subject/tqzixqtx.html