最初に少し背景:
スクロールビュー内にレイアウトがあります。最初に、ユーザーが画面をスクロールすると、scrollviewがスクロールします。ただし、一定量のスクロールの後、スクロールビューでスクロールを無効にし、「スクロールフォーカス」を子レイアウト内のWebビューに移動しました。このように、scrollviewは固定され、すべてのスクロールイベントはその内部の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を明確に呼び出しています。