2012-02-28 51 views
1

所以我有一個FragmentPagerAdapter帶有一個條形碎片(ListFragment)和一個團隊碎片(ListFragment)。當一個項目被長時間點擊時,我希望能夠從團隊選項卡中拖動它並將其放在酒吧選項卡上以建立關係。這在理論上的工作方式與主屏幕類似,如果我靠近邊緣,可以進入下一個屏幕。如何將所選的OnItemLongClick從一個ViewPager項目拖動到另一個

更新:

我使用的是3.0+或兼容庫。

我想拖動到其他選項卡上,而不是在同一個選項卡中。

回答

2

這取決於你的目標級別。如果您的應用程序設計爲在Android 3.0或更高版本上運行,則可以定位內置的Drag and Drop API

如果您的應用程序需要定位以前使用過的早期版本this is a good open-source libraryGithub page),並試圖爲2.0或更高版本的應用程序鏡像內置API的功能。

在任何一種情況下,您都可以從onItemLongClick()回調中啓動startDrag()的拖動操作。

編輯:很抱歉的混亂

你必須以編程方式做基礎上,DragEvent數據「選項卡」在您的ViewPager變化:

  1. 由於ViewPager只是支持的一部分圖書館(並沒有backported),你可能必須附加一個OnDragEventListener到其父ViewGroup。
  2. 您可以監視拖動位置,而ACTION_DRAG_LOCATION事件觸發偵聽器。定義手指在聆聽視圖邊緣必須達到的合理閾值,並在其到達時在ViewPager上撥打setCurrentItem()進行切換。
  3. 只要在開始拖動時(這由在ViewPager上控制),您的新選項卡在視圖層次結構中實例化,則新頁面上的視圖也應該是放置目標的候選對象,因此它們應該能夠收聽ACTION_DROP事件。

HTH

+0

不,這不會在視圖尋呼機元素工作。我使用的是3.0+,startDrag可以工作,但不會轉到viewpager中的其他項目。我會嘗試添加更多細節。 – Jackie 2012-02-28 20:54:48

+0

也應該是FragmentPagerAdapter不是ViewPage我的不好 – Jackie 2012-02-28 21:05:59

+0

@Jackie更新了一些更多的想法。 – Devunwired 2012-02-28 23:40:47

相關問題