在 Recyclerview 之外拖放视图
Drag and Drop view outside of Recyclerview
我想要实现的目标:我希望在可滚动布局(Recyclerview
和 GridlayoutManager
)中有一个视图,其中包含图块(视图)。将项目拖放到 RecyclerView
内应调整图标的位置并与其他元素交换。当拖动开始时,RecyclerView
上方的图标将变为垃圾桶图标,将视图拖动到此图标会将其从 RecyclerView
中删除。
我尝试了这个 excellent tutorial,但我没有找到一种方法来处理 Recyclerview
之外的拖动,因为 ItemTouchHelper.Callback
仅使用 Recycler.ViewHolder
元素作为可能的目标。
方法interpolateOutOfBoundsScroll()
会在视图移出边界时给出反馈,但只会返回屏幕外的总尺寸,但不会返回坐标。此外,尝试将视图拖出 Recyclerview
总是会导致视图在通过 Recyclerview
.
边界的地方被剪切
有谁知道我如何实现这种效果?
您受到 RecyclerView
边界的约束。您有多种选择:
将 RecyclerView
的布局高度设置为 match_parent
并在您的上视图顶部(它是 Toolbar
吗?)并添加一个相同大小的粘性 header 并具有空的透明布局。这样你就可以拖到那里,看到项目漂浮在那里。
与其将项目拖到距离合法 upper-right 项目太近的垃圾桶图标,不如长按 select 该项目(并应用一个信号,如复选标记或红色面具)并使垃圾可以出现并在点击时删除(并且可能允许删除多项)
您只需为 RecyclerView 的父级设置此属性即可实现此目的:
android:clipChildren="false"
编辑:感谢 Adam Katz,我不知道为什么,但有时您必须将其添加到 RecyclerView 才能使其正常工作:
android:clipToPadding="false"
我想要实现的目标:我希望在可滚动布局(Recyclerview
和 GridlayoutManager
)中有一个视图,其中包含图块(视图)。将项目拖放到 RecyclerView
内应调整图标的位置并与其他元素交换。当拖动开始时,RecyclerView
上方的图标将变为垃圾桶图标,将视图拖动到此图标会将其从 RecyclerView
中删除。
我尝试了这个 excellent tutorial,但我没有找到一种方法来处理 Recyclerview
之外的拖动,因为 ItemTouchHelper.Callback
仅使用 Recycler.ViewHolder
元素作为可能的目标。
方法interpolateOutOfBoundsScroll()
会在视图移出边界时给出反馈,但只会返回屏幕外的总尺寸,但不会返回坐标。此外,尝试将视图拖出 Recyclerview
总是会导致视图在通过 Recyclerview
.
有谁知道我如何实现这种效果?
您受到 RecyclerView
边界的约束。您有多种选择:
将
RecyclerView
的布局高度设置为match_parent
并在您的上视图顶部(它是Toolbar
吗?)并添加一个相同大小的粘性 header 并具有空的透明布局。这样你就可以拖到那里,看到项目漂浮在那里。与其将项目拖到距离合法 upper-right 项目太近的垃圾桶图标,不如长按 select 该项目(并应用一个信号,如复选标记或红色面具)并使垃圾可以出现并在点击时删除(并且可能允许删除多项)
您只需为 RecyclerView 的父级设置此属性即可实现此目的:
android:clipChildren="false"
编辑:感谢 Adam Katz,我不知道为什么,但有时您必须将其添加到 RecyclerView 才能使其正常工作:
android:clipToPadding="false"