【问题标题】:How to drag selected OnItemLongClick from one ViewPager item to another如何将选定的 OnItemLongClick 从一个 ViewPager 项目拖到另一个
【发布时间】:2012-02-28 20:40:56
【问题描述】:

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

更新:

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

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

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

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

    如果您的应用程序需要针对早期版本,我以前使用过的this is a good open-source library (Github page) 并尝试为面向 2.0 或更高版本的应用程序镜像内置 API 的功能。

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

    编辑:很抱歉造成混乱

    您必须根据DragEvent 数据以编程方式在您的ViewPager 中更改“选项卡”:

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

    HTH

    【讨论】:

    • 不,这不适用于视图寻呼机元素。我正在使用 3.0+ 并且 startDrag 可以工作,但它不会转到 viewpager 中的其他项目。我会尝试添加更多细节。
    • 也应该是 FragmentPagerAdapter 而不是 ViewPage 我的错
    • @Jackie 更新了一些想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    相关资源
    最近更新 更多