Đầu tiên một chút nền tảng:
Tôi có một bố cục bên trong một scrollview. Lúc đầu, khi người dùng cuộn trên màn hình, cuộn cuộn sẽ cuộn. Tuy nhiên, sau một số lần cuộn nhất định, tôi đã vô hiệu hóa cuộn trên chế độ xem cuộn để di chuyển "tiêu điểm cuộn" lên một chế độ xem web bên trong bố cục con. Bằng cách này, các thanh cuộn xem và tất cả các sự kiện cuộn đi đến webview bên trong nó.
Vì vậy, đối với một giải pháp, khi đạt đến ngưỡng cuộn, tôi xóa bố cục con khỏi chế độ xem cuộn và đặt nó vào cha mẹ của cuộn xem (Và làm cho chế độ xem cuộn không hiển thị).
// 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);
Ý tưởng chung: (-> có nghĩa là chứa)
Trước: Parentlayout -> scrollview -> scrollChildLayout
Sau: ParentLayout -> scrollChildLayout
Đoạn mã trên cho tôi ngoại lệ này:
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)
Bạn có biết những gì đang xảy ra? Tôi rõ ràng đang gọi removeView trên cha mẹ.