RecycleView 设置了dispatchTouchEvent 无法点击item??
时间: 2024-02-01 16:04:08 浏览: 65
如果您为RecyclerView设置了dispatchTouchEvent方法,那么它会截获所有的触摸事件,包括点击事件。为了解决这个问题,您可以在dispatchTouchEvent方法中检查触摸事件类型,如果是点击事件,则将它传递给RecyclerView的父视图,否则继续处理其他类型的触摸事件。
以下是一个示例代码:
```java
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View view = findChildViewUnder(ev.getX(), ev.getY());
if (view != null) {
// 点击了RecyclerView中的子视图,不做处理,交给RecyclerView自己处理
return super.dispatchTouchEvent(ev);
} else {
// 点击了RecyclerView空白区域,将事件传递给父视图处理
getParent().requestDisallowInterceptTouchEvent(false);
return false;
}
}
return super.dispatchTouchEvent(ev);
}
```
在上面的代码中,我们检查了触摸事件的类型是否为ACTION_DOWN,如果是,则查找被点击的子视图。如果找到了子视图,则交给RecyclerView自己处理;否则,我们将事件传递给RecyclerView的父视图处理,以便它可以响应点击事件。
阅读全文