ItemTouchHelper使拖动的项目超过片段页脚

时间:2017-03-03 10:00:12

标签: android

我有RecyclerView ItemTouchHelper。 RecyclerView是一个2/2网格,页面上有页眉和页脚。当用户拿起一个项目时,我希望该项目能够悬停在页脚上。但是,我不希望通过页脚看到回收器视图中的其他项目。

首先我尝试添加clipChildrenclipPadding,但这会产生一种情况,即RecyclerView项目在页脚中向上滚动,这是一个问题。我尝试为项目添加高程并带来ToFont,但那些从未工作过,因为回收者视图仍然在页脚后面,我尝试添加到前面的回收器视图本身,但然后再次所有项目再次成为页脚前面而不是只是拖了一个,有没有人有任何其他想法如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

首先,我要确保您的回收商视图有 var media = await DependencyService.Get<IShare>().PickImage(); _imageSource = media.GetStream(); canvas.InvalidateSurface(); 。这样你就不需要将recyclelerview与页脚重叠 - 它可以在页脚上方结束,并且仍然允许它的孩子在界限之外绘制。

如果您有一个静态页脚,则可以在确定y轴移动得足够远以使当前项目与页脚相交时尝试调用bringToFront。然后当您移回范围或者回收视图完全滚动时,将页脚放回到前面。然而,这将特别容易出错;有点黑客。

编辑:

另一种方法是完全切断拖动项目和recyclerview之间的连接(这将在下拉部分进行一些工作),步骤大致是:

android:clipChildren="false"

答案 1 :(得分:0)

建议,在我的自定义TouchHelperCallback中,我覆盖了onMove方法并忽略了检查变量源和类型是否相同。因此,当我将项目拖过标题时,我可以将项目放在它上面。

@Override
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) {
        //if (source.getItemViewType() != target.getItemViewType()) {
        //    return false;
        //}

        // Notify the adapter of the move
        mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition());
        return true;
    }

我没有修改过关于我从https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.jl59rui0l

获取的拖放的教程