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



所以我有一个FragmentPagerAdapter,它包含一个条形片段(ListFragment)和一个团队片段(ListFragment)。当一个项目被长时间点击时,我希望能够将其从团队选项卡中拖动,并将其放在条形图选项卡上以建立关系。理论上,这将类似于主屏幕,如果我靠近项目的边缘,我可以进入下一个屏幕。

更新:

我正在使用3.0+或兼容库。

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

这取决于您的目标级别。如果您的应用程序设计为在Android 3.0或更高版本上运行,您可以针对内置的拖放API。

如果您的应用程序需要针对早期版本,这是一个很好的开源库(Github页面),我以前使用过它,并试图为2.0或更高版本的应用程序镜像内置API的功能。

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

编辑:很抱歉造成混淆

您必须根据DragEvent数据以编程方式对ViewPager中的"选项卡"进行更改:

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

HTH

最新更新