0

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

从这篇文章中,我一直在使用 Tom Quinsn 的网格(感谢 Tom !!!):

Android Gridview 拖放示例

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

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

4

2 回答 2

0

在此链接的帮助下,我正在开发自己的拖放应用程序。您可以将代码与来自 Tom Quesinsn 的代码进行比较。它还获取 GridView 的不同子级并将它们添加为“放置目标”,接受放置在它们上并复制您正在拖动的视图的图像。

于 2012-11-07T19:34:32.533 回答
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);
于 2013-05-30T07:26:23.690 回答