16

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

初始状态开始拖动 View5将 View5 拖到垃圾桶图标View5 被删除,其他 Views 一起移动

我尝试了这个优秀的教程,但是我没有找到一种方法来处理外部的拖动,Recyclerview因为ItemTouchHelper.Callback只使用Recycler.ViewHolder元素作为可能的目标。

interpolateOutOfBoundsScroll()如果视图移出边界,该方法会提供反馈,但只会返回屏幕外的总大小,而不是坐标。此外,尝试将视图拖出Recyclerview总是会导致视图在它通过Recyclerview.

有谁知道我怎样才能达到这种效果?

4

2 回答 2

13

您可以通过为 RecyclerView 的父级设置此属性来实现此目的:

    android:clipChildren="false"

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

    android:clipToPadding="false"
于 2016-12-10T03:44:05.583 回答
4

你被界限所RecyclerView束缚。你有几个选择:

  1. RecyclerView' 的布局高度设置为match_parent并位于上视图的顶部(是Toolbar吗?)并添加一个相同大小的粘性标题并具有一个空的透明布局。这样,您可以拖动它们并看到该项目漂浮在那里。

  2. 不要将项目拖到离合法右上角项目太近的垃圾桶图标上,而是长按以选择项目(并应用复选标记或红色蒙版之类的信号)并制作垃圾桶单击时出现并删除(并且可能允许删除多项)

于 2016-01-27T14:22:06.180 回答