Сначала немного фона:
У меня есть макет внутри прокрутки.Сначала, когда пользователь прокручивает на экране, прокрутка прокручивается.Однако после определенного количества прокрутки я должен был отключить прокрутку в представлении прокрутки и переместить «фокус прокрутки» на веб-просмотр внутри дочернего макета.Таким образом, палочки прокрутки и все события прокрутки переходят в веб-представление внутри него.
Таким образом, для решения, когда порог прокрутки достигнут, я удаляю дочерний макет из прокрутки и помещаю его в представление прокрутки.parent. (и сделать представление прокрутки невидимым).
// 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 для родителя.