在Recyclerview之外拖放视图

Eve*_*Eve 10 android drag-and-drop gridlayoutmanager android-recyclerview

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

初始状态开始拖动View5将View5拖到垃圾桶图标View5已删除,其他视图也随之移动

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

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

有谁知道我怎么能达到这个效果?

Hai*_*anh 7

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

    android:clipChildren="false"
Run Code Online (Sandbox Code Playgroud)

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

    android:clipToPadding="false"
Run Code Online (Sandbox Code Playgroud)


小智 4

你受到RecyclerView边界的束缚。您有多种选择:

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

  2. 不要将项目拖到距离合法右上角项目太近的垃圾桶图标上,而是长按以选择该项目(并应用复选标记或红色遮罩等信号)并使垃圾桶图标单击后显示并删除(并且可能允许删除多项)