android中RecyclerView嵌套问题中,内层RecyclerView区域无法响应Item点击事件 您所在的位置:网站首页 recycleview嵌套recycleview内部位置重置 android中RecyclerView嵌套问题中,内层RecyclerView区域无法响应Item点击事件

android中RecyclerView嵌套问题中,内层RecyclerView区域无法响应Item点击事件

2024-07-17 03:11| 来源: 网络整理| 查看: 265

问题描述:

项目需求中要使用到RecyclerView内嵌套RecyclerView布局,但问题是,我点击外层RecyclerView,内层RecyclerView的区域无法响应外层的点击事件。 在这里插入图片描述

解决方法(方法不同,原理相同)

注意:以下方法只是针对于内层RecyclerView没有设置任何点击事件的,有点击事件的暂时还没想到如何去设置,如果有知道的大佬可以在评论区告诉我,谢谢

1.方法一

给内层的RecyclerView设置OnTouchListener,在onTouch中处理外层RecyclerView的Item的触摸事件 onTouchEvent。item已经设置了点击事件,所以在onTouchEvent的事件处理中会调用到item的点击事件。

good_list_rv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return itemView.onTouchEvent(event); } }); 2.方法二

依然是给内层的RecyclerView设置OnTouchListener,在onTouch中调用外层RecyclerView的Item的 preformClick方法 ,执行外层item的点击事件。

good_list_rv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP){ itemView.performClick(); } return false; } }); 3.方法三

这个方法,其实就是在方法二的基础上加了些判断,然后进行封装,代码如下:

/** * 用于处理 RecyclerView嵌套RecyclerView,内层RecyclerView区域无法响应Item点击问题(内层recyclerview使用) */ public class ChildTouchListener implements View.OnTouchListener { private float downX; private float downY; private float touchSlop; private View view; public ChildTouchListener(View view){ this.view = view; touchSlop = ViewConfiguration.get(view.getContext()).getScaledTouchSlop(); } @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getActionMasked()){ case MotionEvent.ACTION_DOWN: downX = event.getX(); downY = event.getY(); break; case MotionEvent.ACTION_UP: if(Math.abs(event.getY()-downY)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有