我有一个带有 ItemTouchHelper
的 RecyclerView
。 RecyclerView 是一个 2/2 网格,它在页面上有页眉和页脚。当用户拿起一个项目时,我希望该项目能够悬停在页脚上。但是,我不希望通过页脚可以看到回收站 View 中的其他项目。
所以首先我尝试添加 clipChildren
和 clipPadding
但这造成了 RecyclerView 项目在页脚中向上滚动的情况,这是一个问题。我尝试向项目添加高度和 bringToFont 但这些从未奏效,因为回收站 View 仍在页脚后面,我尝试将 bring to front 添加到回收站 View 本身但是然后所有项目再次成为页脚前面而不是只是拖了一个,有没有人对如何解决这个问题有任何其他想法?
最佳答案
我首先要确保您的回收站 View 具有 android:clipChildren="false"
。这样你就不需要 recyclerview 从字面上被页脚重叠 - 它可以在页脚上方结束并且仍然允许它的 child 在边界之外绘制。
如果您有静态页脚,您可以尝试调用 bringToFront当您确定 y 轴移动得足够远以至于您当前的项目与页脚相交时。然后,当您移回范围之外或回收站 View 完全滚动时,将页脚放回前面。但是,这特别容易出错;有点黑客。
编辑:
另一种方法是完全切断被拖动的item和recyclerview之间的连接(这会在drop部分做一些工作),步骤大致是:
- Start dragging item i
- store a reference to i.getParent() and the view index within its parent
- i.getParent().removeView(i) //detach the item from the recycler (or create clone)
- layout.addView(i) //add item onto main layout containing footer, allowing overlap
- when dropped, use the parent reference and index to reattach the item
- then work out where the item was released
关于android - ItemTouchHelper 使拖动的项目越过 fragment 页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575812/