Android滑动事件与RecyclerView的item点击事件的冲突

对item的根布局LinearLayout添加点击事件的监听,但是在滑动item的时候(不是竖着滑,而是普通的随意地横向的滑),就会触发点击事件,不明所以。

解决办法:

mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
            public float y1,y2,x2,x1;

            @Override
            public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
                if (e.getAction() == MotionEvent.ACTION_DOWN) {
                    x1 = e.getX();
                    y1 = e.getY();
                }
                if (e.getAction() == MotionEvent.ACTION_MOVE) {
                    x1 = e.getX();
                    y1 = e.getY();
                }
                if (e.getAction() == MotionEvent.ACTION_UP) {
                    x2 = e.getX();
                    y2 = e.getY();
                    if (Math.abs(x1 - x2) < 6) {
                        return false;// 距离较小,当作click事件来处理
                    }
                    if(Math.abs(x1 - x2) >60){  // 真正的onTouch事件
                        return true;
                    }
                }
                return false;

            }

            @Override
            public void onTouchEvent(RecyclerView rv, MotionEvent e) {

            }

            @Override
            public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

            }
        });

参考:https://www.jianshu.com/p/0180075c1bd4

 

 

 

你可能感兴趣的:(RecyclerView)