当用户拖动边界附近的对象时滚动列表

时间:2016-02-12 02:07:46

标签: java android

我有一个问题,我无法以一种我非常满意的方式解决。

我认为我正在拖放到列表中。该列表使用recyclerView创建。拖动对象工作正常,recyclerView的项目都可以收到事件没有问题。现在我想让列表滚动,因为用户将手指拖到列表的顶部或底部。我的第一步是将一个dragEvent监听器添加到recyclerView,并尝试在每次我靠近顶部或底部边缘的位置时开始滚动。所以,我的DragEvent.Location案例看起来像这样:

Metaclass

它有点有效。事情向正确的方向滚动。虽然看起来有点溅,但一般不会很顺利地滚动。此外,当回收者视图仍在滚动时,拖放事件有时无法传递给孩子。

所以,我去了谷歌使用列表视图做同样事情的例子 - link。我修改了他们用于列表视图的代码,并尝试以类似的方式处理我的recyclerView。这对我来说的结果甚至更差。

我尝试过这些技术的各种其他改动,并交换使用smoothScroll函数而不是标准滚动函数,但我对任何结果都不太满意。

有没有人有一个很好的解决方案来解决这个问题?

更新:我现在相信我的许多问题都是由于拖拽监听器相当不可靠。有时,回收者在其接收事件时未能获得事件。

1 个答案:

答案 0 :(得分:0)

结果视图上的拖动侦听器并不十分可靠。随着我在屏幕上移动手指的随机时间,拖动侦听器将无法接收所有事件。我相信这样做的原因是recyclelerView的孩子们也接受了拖拽回调的方式。解决方案是做我原来尝试过的,但通过片段本身的监听器。现在当我得到一个事件时,我检查坐标以查看它所在的视图,然后将其转换为该视图的本地坐标。然后我可以确切地确定我需要如何处理它。

相关问题