尝试复制没有父视图的视图 - Android
Posted
技术标签:
【中文标题】尝试复制没有父视图的视图 - Android【英文标题】:Trying to duplicate a View without it's parent - Android 【发布时间】:2018-09-05 08:16:03 【问题描述】:我有一个用于生成新布局的布局列表。
但是问题在于,在将列表布局添加到新布局之前,我需要调用 removeView(),因为列表布局是子布局。调用此方法会从 UI 中移除看起来不太好的视图。
LinearLayout linearLayout = null;
for(LinearLayout cardView : selectedCardIDList)
viewHeight += cardView.getHeight();
if(viewHeight < 842)
ViewGroup viewGroup = ((ViewGroup)cardView.getParent());
viewGroup.removeView(cardView);
linearLayout = cardView;
pdfViewLayout.addView(linearLayout);
viewGroup.addView(cardView);
pdfViewLayout 是我使用列表中的布局构建的布局。
我试图找到一种方法来复制列表中的布局,这样我认为它不会干扰我的 UI,但是调用 ((ViewGroup)linearLayout.getParent()).removeView(linearLayout);
仍然会从 UI 中删除它,因为它使用的是同一个父级。
有没有办法可以在没有父视图的情况下进行复制? 谢谢
编辑 - 在我最近的尝试中,viewGroup.addView(cardView);
行再次出现“孩子已经有父母”错误
【问题讨论】:
【参考方案1】:你可以这样做
-
创建一个空视图
View duplicateview = new View();
将目标视图复制到您创建的新视图view = "get your target view that you need to duplicate"//your view
因此,您要查找的视图在 duplicateview
中重复。
【讨论】:
我在new View()
这样尝试时得到“无法解析构造函数”
创建视图Button myButton = new Button(this); myButton.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
别忘了设置LayoutParams
还是同样的问题。问题不在于创建副本,问题在于副本仍然具有原始父级。似乎我对副本所做的任何事情都会影响原件。例如,删除副本上的父级也会删除原始上的父项
请检查副本是否仍附加到父视图,并且layparams
已添加到目标视图。然后创建一个新视图,如果它添加的问题是在父级而不是在子级中,则将其添加为子级。
如果您检查我已分配的更新问题,linearLayout = cardView;
,则在我从原始文件中删除父项后,复制到原始文件。此时,两个视图都没有父视图。下一行我将副本添加到 pdfView 中,一切正常。之后,我尝试将原件添加到原始父级,但应用程序崩溃,因为原件现在具有分配给副本的视图。以上是关于尝试复制没有父视图的视图 - Android的主要内容,如果未能解决你的问题,请参考以下文章
android:为啥“layout_weight = 1”使视图在线性布局中对齐父底部? [复制]
UI Gesture 没有触发 + 从不是父视图的父视图中删除子视图