Android RecyclerView在位置(x,y)查找最底部的子对象
在我的活动中,我有一个RecyclerView,附带了ItemTouchHelper。ItemTouchHelper具有重写的方法:Android RecyclerView在位置(x,y)查找最底部的子对象,android,drag-and-drop,android-recyclerview,itemtouchhelper,Android,Drag And Drop,Android Recyclerview,Itemtouchhelper,在我的活动中,我有一个RecyclerView,附带了ItemTouchHelper。ItemTouchHelper具有重写的方法: @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN |
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END;
final int swipeFlags = 0;
return makeMovementFlags(dragFlags, swipeFlags);
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
因此,RecyclerView中的视图是可拖动的
我的目标是能够通过RecyclerView拖动其中一个RecyclerView项并获取视图,即在拖动视图下。所以,我试着用“在给定点下找到最上面的视图”
但是那里发生了一些奇怪的事情
当我将某些项拖动到其原始位置的底部(如图1所示)时,正如您所看到的,findChildViewUnder()返回该拖动视图下的视图(这是我的目标)
但,若我将项目向上拖动到其原始位置(如图2所示),则findChildViewUnder()将返回拖动的视图(但不返回其下的视图)
有什么建议吗?如何始终获取处于拖动项下的视图
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
if (this.mRecyclerView.findChildViewUnder(viewHolder.itemView.getX(), viewHolder.itemView.getY()) != null) {
System.out.println(this.mRecyclerView.findChildViewUnder(viewHolder.itemView.getX(), viewHolder.itemView.getY()).getTag());
System.out.println(viewHolder.itemView.getX() + " " +viewHolder.itemView.getY());
}
// mRecyclerView.
}