所以我有这样的代码:

((LinearLayout) view.getParent()).removeView(view);
container.addView(view);


现在,如果我错了,请纠正我,但是该代码应该从当前的ViewGroup中删除​​该视图,然后将其添加到新的ViewGroup

但是,引发以下exception

E/AndroidRuntime(31220): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.


请问为什么会发生这种情况的任何想法?

编辑:仅在父级的XML标签中将android:animateLayoutChanges设置为true时才会发生

最佳答案

它可能不起作用,因为View的mParent字段没有通过在其父对象上调用removeView()来重置。

相反,最好充气一个新的View。

现在,您已经编辑了有关layoutTransition的内容,可以尝试从ViewParent中删除layoutTransition,同时将其删除。从来没有尝试过自己。

final ViewGroup parent = (ViewGroup) view.getParent();
final LayoutTransition transition = parent.getLayoutTransition();
parent.setLayoutTransition(null);
parent.removeView(view);
parent.setLayoutTransition(transition);
newParent.addView(view);

关于android - 在Android中重设 View 无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21530201/

10-13 04:11