0

假设我有一个(以编程方式创建的)父 LinearLayout parent1,然后我添加了一个(以编程方式创建的)childA 布局,parent1.addView(childA);然后我以某种复杂的方式设置 childA - 也许它在其中有自己的孩子。现在我可以随后以某种方式取消它与 parent1 的链接,而不会损坏 childA 中的任何信息,以便我可以使用 parent2.addView(childA) 重新使用它吗?

4

2 回答 2

2

是的你可以!

您只需要保证在将其从前一个父视图中删除之前不会将其添加到另一个视图中。

编辑

// assuming a previously defined childA view
View childA;

parent1.removeView(childA);
parent2.addView(childA);
于 2012-04-20T17:05:01.930 回答
0

如果在添加视图时提供了索引,则可以稍后取回:

int index = // whatever
parent1.addView(childA, index);
...
View child = parent1.getViewAt(index);
parent1.removeViewAt(index);
...
parent2.addView(child, index2);

另请注意,两个父视图必须是相同类型的视图组,或者您需要将子视图的 layoutParams 更改为新父视图的适当类型

于 2012-04-20T17:07:02.570 回答