RecyclerView dispatchTouchEvent 禁止滑动但是可以点击item
时间: 2023-12-02 18:23:42 浏览: 113
Android 中RecycleView实现item的点击事件
你可以在RecyclerView的onTouchListener中拦截触摸事件,然后根据需要进行处理。下面是一个实现禁止滑动但是可以点击item的示例代码:
```
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
// 禁止滑动
return true;
}
return false;
}
});
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
// 处理item点击事件
if (e.getAction() == MotionEvent.ACTION_UP) {
View childView = rv.findChildViewUnder(e.getX(), e.getY());
if (childView != null && listener != null) {
listener.onItemClick(childView, rv.getChildAdapterPosition(childView));
return true;
}
}
return super.onInterceptTouchEvent(rv, e);
}
});
```
在onTouchListener中,我们拦截了滑动事件(ACTION_MOVE),并返回true,这样就可以禁止RecyclerView的滑动了。而在addOnItemTouchListener中,我们处理了item的点击事件(ACTION_UP),并在回调中返回true,表示我们已经处理了该事件,不需要让RecyclerView再进行处理。
阅读全文