在Recyclerview之外拖放视图

时间:2016-01-27 13:49:02

标签: android drag-and-drop android-recyclerview gridlayoutmanager

我想要实现的目标:我希望在可滚动布局(RecyclerviewGridlayoutManager)内部有一个视图,其中包含tile(Views)。拖放RecyclerView内的项目应调整图标的位置并与其他元素交换。当拖动开始时,RecyclerView上方的图标将更改为垃圾桶图标,将视图拖动到此图标会将其从此RecyclerView中删除。

Initial state Starting to drag View5 dragging View5 to trash icon View5 was deleted and other Views moved along

我试过这个excellent tutorial,但由于Recyclerview仅使用ItemTouchHelper.Callback元素作为可能的目标,因此我找不到如何处理Recycler.ViewHolder之外的拖动的方法

如果视图移出边界,方法interpolateOutOfBoundsScroll()会给出反馈,但只返回屏幕外的总大小,但没有坐标。此外,尝试将视图拖出Recyclerview总是会导致切割视图,使其通过Recyclerview的边框。

有没有人知道如何才能达到这种效果?

2 个答案:

答案 0 :(得分:7)

您只需为RecyclerView的父级设置此属性即可实现此目的:

    android:clipChildren="false"

编辑:感谢Adam Katz,我不知道为什么,但有时您必须将它添加到RecyclerView以使其工作:

    android:clipToPadding="false"

答案 1 :(得分:4)

您受RecyclerView边界的约束。您有几种选择:

  1. RecyclerView的布局高度设为match_parent并位于上方视图之上(是Toolbar吗?)并添加粘性标题大小相同,透明布局为空。这样你就可以拖动它,看看漂浮在那里的物品。

  2. 不要将项目拖动到太靠近合法右上方项目的垃圾桶图标,而是长按一次以选择项目(并应用像复选标记或红色面具这样的信号)并使垃圾可以出现并删除uppon点击(并允许多项删除)