所以我有这样的代码:
((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/