如何将选定的OnItemLongClick从一个ViewPager项拖到另一个
所以我有一个带有条形片段(ListFragment)和团队片段(ListFragment)的FragmentPagerAdapter。 当一个项目被长按时,我希望能够从团队选项卡中拖动它并将其放在栏标签上以建立关系。 这在理论上与主屏幕类似,如果我靠近边缘,我可以到达下一个屏幕。
更新:
我使用的是3.0+或兼容性库。
我试图拖动到另一个选项卡上,而不是在同一个选项卡中。
这取决于您定位的级别。 如果您的应用程序设计为在Android 3.0或更高版本上运行,则可以定位内置的Drag and Drop API 。
如果您的应用程序需要定位早期版本,那么这是一个很好的开源库 ( Github页面 ),我之前使用过,并尝试镜像针对2.0或更高版本的应用程序的内置API的function。
在任何一种情况下,您都可以使用onItemLongClick()
回调中的startDrag()
启动拖动操作。
编辑:抱歉混乱
您必须以编程ViewPager
根据DragEvent
数据执行ViewPager
的“选项卡”更改:
- 由于
ViewPager
只是支持库的一部分(并且没有向后移植),因此您可能必须将OnDragEventListener
附加到其父ViewGroup。 - 您可以在
ACTION_DRAG_LOCATION
事件触发侦听器时监视拖动位置。 定义一个合理的阈值,手指必须在侦听视图的边缘内到达,当它到达那里时,调用ViewPager
上的setCurrentItem()
进行切换。 - 只要您在开始拖动时在视图层次结构中实例化了新选项卡(这由
setOffscreenPageLimit()
上的setOffscreenPageLimit()
ViewPager
),新页面上的视图也应该是放置目标的候选者,因此他们应该能够侦听ACTION_DROP
事件。
HTH