2012-11-07 40 views
0

我有一個網格的工作示例,該網格允許使用長觸摸重新排序項目以激活拖放。如果項目很簡單,所有工作都很好。 TextViewImageView但如果項目是LinearLayouts只顯示佈局本身。使用LinearLayouts作爲拖動項目的Android Drag-n-Drop網格

我一直在使用湯姆Quinsn的網格(感謝湯姆!)從這個帖子:

Android Gridview drag and drop example

,我可以得到LinearLayouts如果我得到我自己的LinearLayout類的工作,並覆蓋onLayout(),但這迫使我在此函數內的佈局中對子控件的位置進行硬編碼。

理想情況下,我希望能夠在XML文件中定義項目佈局,並在將它們添加到處理網格的控件之前將它們充氣。我猜測出於某種原因,框架沒有調用Tom's代碼中定義的DraggableGridView視圖中包含的子項的佈局函數,但我不明白爲什麼會這樣。

回答

0

我正在開發自己的拖放應用程序,並有this鏈接。您可以將代碼與Tom Quesinsn的代碼進行比較。它還獲取GridView的不同子項,並將它們添加爲「放置目標」,以接受對它們的放置並複製正在拖動的視圖的圖像。

0

這是一個已知的問題DraggableGridView,不幸的是,我還沒有得到解決。當我寫DGV時,我並沒有完全理解如何制定觀點。在鋪設之前,您可能會嘗試讓每個孩子都擁有DGV。添加類似:

getChildAt(i).measure(MeasureSpec.makeMeasureSpec(childSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(childSize, MeasureSpec.EXACTLY)); 

佈局之前,在這條線:

getChildAt(i).layout(xy.x, xy.y, xy.x + childSize, xy.y + childSize);