1

在我的 Activity 中,我有一个 RecyclerView,并附有 ItemTouchHelper。ItemTouchHelper,具有覆盖的方法:

  @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 项目之一并获取视图,即在拖动视图下。所以,我尝试使用RecyclerView.findChildViewUnder(float x, float y)说:“找到给定点下的最顶层视图”。

 @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.
    }

但是那里正在发生一些奇怪的事情。

当我将某个项目拖到其原始位置的底部时(如在 Image1 中),如您所见,findChildViewUnder() 返回位于该拖动视图下方的视图(这是我的目标)。

图片1

但是,如果我将项目上方拖动到其原始位置(如 Image2 中),则 findChildViewUnder() 返回拖动的视图(但不返回其下的视图)。

图片2

有什么建议么?我怎样才能始终获得拖动项目下的视图?

4

0 回答 0