搜索
您的当前位置:首页正文

RecyclerView的item中嵌套RecyclerView

来源:知库网

场景:最外层RecyclerView垂直布局可上下滑动,内部有个Item需要嵌套RecyclerView垂直布局也可上下滑动,如果不做处理会发生滑动冲突,外层RecyclerView滑动,内层不可滑。

解决方法

1、RV addOnItemTouchListener 监听touchEvent获取event坐标点,找到被点击位置的item,判断是否是需要拦截的item

mRecycler.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {

@Override

    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

        // 外层RV滑动与内层布局滑动冲突解决

        if (e !=null) {

            // 找到被点击位置的item的rootView

            View itemView = rv.findChildViewUnder(e.getX(), e.getY());

            if (itemView !=null) {

                // 通过rootView找到对应的ViewHolder

                BaseAdapter.VH holder = (BaseAdapter.VH) rv.getChildViewHolder(itemView);

                if (holder.getViewHolderType() == R.layout.view_pinyin_card) {

                    ((ViewGroup) itemView).requestDisallowInterceptTouchEvent(true);

                }

            }

        }

        return false;

    }

@Override

    public void onTouchEvent(RecyclerView rv, MotionEvent e) {

    }

@Override

    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }

});

总结:父布局onInterceptTouchEvent中判断要拦截或者不要拦截的事件区域。

Top