먼저 작은 배경 :
스크롤보기 안에 레이아웃이 있습니다. 처음에 사용자가 화면을 스크롤하면 스크롤보기가 스크롤됩니다. 그러나 일정량의 스크롤 후, 스크롤보기에서 스크롤을 비활성화하고 "스크롤 포커스"를 자식 레이아웃 내부의 웹 뷰로 이동했습니다. 이렇게하면 스크롤보기가 고정되고 모든 스크롤 이벤트가 내부의 웹보기로 이동합니다.
따라서 솔루션의 경우 스크롤 임계 값에 도달하면 스크롤보기에서 자식 레이아웃을 제거하고 스크롤보기의 부모에 배치합니다 (스크롤보기를 보이지 않게 만듭니다).
// 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를 명확하게 호출하고 있습니다.