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