RecycleView onDragListener 如何监听 拖动事件是否 在 item内
时间: 2024-02-22 22:57:21 浏览: 80
您可以在 `RecyclerView.OnItemTouchListener` 接口中实现 `onInterceptTouchEvent()` 方法来监听拖动事件是否在 item 内:
```
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
View childView = rv.findChildViewUnder(e.getX(), e.getY());
if (childView != null && e.getAction() == MotionEvent.ACTION_MOVE) {
// 获取 item 的位置
int position = rv.getChildAdapterPosition(childView);
// TODO: 在此处处理拖动事件是否在 item 内
return true;
}
return false;
}
@Override
public void onTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
// 不处理
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
// 不处理
}
});
```
在 `onInterceptTouchEvent()` 方法中,首先通过 `findChildViewUnder()` 方法获取到触摸点下的 View,然后判断该 View 是否为 item(即不为 RecyclerView 的 header、footer 等),最后根据需要处理拖动事件是否在 item 内。
需要注意的是,如果您需要在 item 中实现拖动功能,可以使用 `ItemTouchHelper` 类来帮助您实现。
阅读全文