使用LinearLayout作为拖动项目的Android拖放网格

时间:2012-11-07 18:29:50

标签: android grid

我有一个网格的工作示例,它允许使用长触摸对项目进行重新排序以激活拖放操作。如果项目是简单的视图,则一切正常TextViewImageView,但如果项目为LinearLayouts,则仅显示布局本身。

我一直在使用Tom Quinsn的网格(感谢Tom !!!):

Android Gridview drag and drop example

如果我派生自己的LinearLayouts类并覆盖LinearLayout,我可以让onLayout()工作,但这迫使我在此函数中硬编码布局中子控件的位置。

理想情况下,我希望能够在XML文件中定义项目布局并在将它们添加到处理网格的Control之前对其进行充气。我猜测由于某种原因,框架没有为Tom的代码中定义的DraggableGridView视图中包含的子项调用布局函数,但我不明白为什么会这样。

2 个答案:

答案 0 :(得分:0)

我正在this链接的帮助下开发自己的拖放应用程序。您可以将代码与Tom Quesinsn中的代码进行比较。它还获取GridView的不同子项,并将它们添加为“drop targets”,接受它们上的drop并复制您正在拖动的View的Image。

答案 1 :(得分: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);
相关问题