猿问

首先在孩子的父母上调用removeView()

首先一点背景:


我在scrollview中有一个布局。首先,当用户在屏幕上滚动时,滚动视图将滚动。但是,经过一定数量的滚动后,我将禁用滚动视图上的滚动,将“滚动焦点”移到子布局内的Web视图上。这样,滚动视图会停留,所有滚动事件都将进入其中的Webview。


因此,对于一个解决方案,当达到滚动阈值时,我将从滚动视图中移除子布局并将其放置在滚动视图的父视图中(并使滚动视图不可见)。


// Remove the child view from the scroll view

scrollView.removeView(scrollChildLayout);


// Get scroll view out of the way

scrollView.setVisibility(View.GONE);


// Put the child view into scrollview's parent view

parentLayout.addView(scrollChildLayout);

总体思路:(->表示包含)


之前:parentlayout-> scrollview-> scrollChildLayout


之后:parentLayout-> scrollChildLayout


上面的代码给了我这个例外:


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

           at android.view.ViewGroup.addViewInner(ViewGroup.java:1976)

           at android.view.ViewGroup.addView(ViewGroup.java:1871)

           at android.view.ViewGroup.addView(ViewGroup.java:1828)

           at android.view.ViewGroup.addView(ViewGroup.java:1808)

你知道发生了什么吗?我显然在父级上调用removeView。

偶然的你
浏览 967回答 4
4回答

茅侃侃

解:((ViewGroup)scrollChildLayout.getParent()).removeView(scrollChildLayout);//scrollView.removeView(scrollChildLayout);使用子元素获取对父元素的引用。将父对象强制转换为ViewGroup,以便您可以访问removeView方法并使用它。

斯蒂芬大帝

尝试先从其父视图中移除scrollChildLayout吗?scrollview.removeView(scrollChildLayout)或从父视图中删除所有子项,然后再次添加它们。scrollview.removeAllViews()

绝地无双

在带有活动的onCreate或带有片段的onCreateView中。 if (view != null) {    ViewGroup parent = (ViewGroup) view.getParent();    if (parent != null) {        parent.removeView(view);    }}try {    view = inflater.inflate(R.layout.fragment_main, container, false);} catch (InflateException e) {}

慕田峪7331174

好吧,叫我偏执,但我建议:  final android.view.ViewParent parent = view.getParent ();  if (parent instanceof android.view.ViewManager)  {     final android.view.ViewManager viewManager = (android.view.ViewManager) parent;     viewManager.removeView (view);  } // if抛弃instanceof不公正似乎是错误的。并且(感谢IntelliJ IDEA告诉我)  removeView是ViewManager界面的一部分。当有一个非常合适的接口可用时,就不应将其转换为具体的类。
随时随地看视频慕课网APP

相关分类

Android
我要回答