RecyclerView内嵌套RecyclerView导致外层item点击不响应

当RecyclerView嵌套另一个RecyclerView时,外部RecyclerView的点击事件可能无法正常响应。本文介绍了事件处理机制,通过重写内部RecyclerView的onTouchEvent和onInterceptTouchEvent方法,阻止其消费事件,确保事件能传递到外层RecyclerView,从而实现外层item的点击响应。同时提供了一个NoTouchRecyclerView类的示例代码,用于避免子RecyclerView的触摸监听干扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用RecyclerViewCommonAdapter时,recyclerView嵌套一个显示图片的recyclerView,外层recyclerView需要响应item的点击进行跳转,在嵌套的RecyclerView中点击无效。没用原生的Adapter写过,不知道会不会响应。

首先,需要知道触摸事件的响应机制是怎么样的:由上至下,最下层不消费后,则由下至上;然后需要了解一下这三个方法:dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent。

dispatchTouchEvent:事件分发,一般不处理,返回false,事件到onInterceptTouchEvent中处理。

onInterceptTouchEvent:事件拦截,返回true的话,则不向下传递,事件到onTouchEvent,返回false事件往下传递

onTouchEvent:返回true代表事件消费,返回false不消费,事件往上传递。

只需要内部RecyclerView用于显示,不需要任何操作的情况下,为了使外层RecyclerView的item响应,把嵌入的RecyclerView触摸事件拦截,并且不消费就行了,事件就会传递到上一层,重写嵌套的RecyclerView

 

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;

/**
 * @Author:  
 * @CreateDate: 2021/1/7 10:54
 * @Version: 1.0.0
 * @Description:   RecyclerView内嵌套RecyclerView导致外层item点击不响应, 去除子recycleView的touch监听
 */
public class NoTouchRecyclerView extends RecyclerView {
    public NoTouchRecyclerView(Context context) {
        super(context);
    }

    public NoTouchRecyclerView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public NoTouchRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    @Override
    public boolean onTouchEvent(MotionEvent e) {
        return false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent e) {
        return true;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return super.dispatchTouchEvent(ev);
    }

}

 

关注公众号,了解更多精选文章吧。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yayayaiii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值