如何将选定的OnItemLongClick从一个ViewPager项拖到另一个

所以我有一个带有条形片段(ListFragment)和团队片段(ListFragment)的FragmentPagerAdapter。 当一个项目被长按时,我希望能够从团队选项卡中拖动它并将其放在栏标签上以建立关系。 这在理论上与主屏幕类似,如果我靠近边缘,我可以到达下一个屏幕。

更新:

我使用的是3.0+或兼容性库。

我试图拖动到另一个选项卡上,而不是在同一个选项卡中。

这取决于您定位的级别。 如果您的应用程序设计为在Android 3.0或更高版本上运行,则可以定位内置的Drag and Drop API 。

如果您的应用程序需要定位早期版本,那么这是一个很好的开源库 ( Github页面 ),我之前使用过,并尝试镜像针对2.0或更高版本的应用程序的内置API的function。

在任何一种情况下,您都可以使用onItemLongClick()回调中的startDrag()启动拖动操作。

编辑:抱歉混乱

您必须以编程ViewPager根据DragEvent数据执行ViewPager的“选项卡”更改:

  1. 由于ViewPager只是支持库的一部分(并且没有向后移植),因此您可能必须将OnDragEventListener附加到其父ViewGroup。
  2. 您可以在ACTION_DRAG_LOCATION事件触发侦听器时监视拖动位置。 定义一个合理的阈值,手指必须在侦听视图的边缘内到达,当它到达那里时,调用ViewPager上的setCurrentItem()进行切换。
  3. 只要您在开始拖动时在视图层次结构中实例化了新选项卡(这由setOffscreenPageLimit()上的setOffscreenPageLimit() ViewPager ),新页面上的视图也应该是放置目标的候选者,因此他们应该能够侦听ACTION_DROP事件。

HTH