android - ItemTouchHelper 使拖动的项目越过 fragment 页脚

标签 android

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

所以首先我尝试添加 clipChildrenclipPadding 但这造成了 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/

相关文章:

android - 如何向 android.widget.SearchView 添加额外的数据?

android - bindService的疑惑

java - Android SDK 中的 dx.jar 是什么?

java - 更好的性能,SQLite 查询与内存中的 ArrayList<Object>

android - 让 Samsung Android 设备作为 iBeacon 做广告

java - onFling 和多点触控 - 多个 MotionEvent 指针

android - 指令 'monitor-enter v1' 期间出现空指针异常

android - 如何使用 Phonegap 和 jQuery Mobile 在 Android 设备中存储 cookie 值?

android - 如何将整数传递给类的实例并使用它来调用另一个类的方法?

android - 使用 Unity-ARKit 插件创建 Android AR 应用