Primeiro um pouco de fundo:
Eu tenho um layout dentro de uma scrollview. Inicialmente, quando o usuário rola na tela, a exibição de rolagem rola. No entanto, após uma certa quantidade de rolagem, desativei a rolagem na exibição de rolagem e movi o "foco da rolagem" para uma visualização da web dentro do layout filho. Dessa forma, o scrollview adere e todos os eventos de rolagem vão para o webview dentro dele.
Portanto, para uma solução, quando o limite de rolagem é atingido, removo o layout filho da scrollview e o coloco no pai da scrollview (e torno a scrollview invisível).
// 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);
Ideia geral: (-> meios contém)
Antes: parentlayout -> scrollview -> scrollChildLayout
Depois: parentLayout -> scrollChildLayout
O código acima está me dando essa exceção:
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)
Você sabe o que está acontecendo? Estou claramente chamando removeView no pai.