Спочатку невелике тло:
У мене макет всередині прокрутки. Спочатку, коли користувач прокручує екран, прокрутка прокручує. Однак, після певної кількості прокрутки, я повинен був відключити прокрутку у вікні прокрутки, щоб перемістити "фокус прокрутки" на веб-перегляд всередині дочірнього макета. Таким чином, паличка перегляду прокрутки і всі події прокрутки переходять до веб-перегляду всередині нього.
Отже, для рішення, коли досягнуто порогу прокрутки, я видаляю дочірню компоновку з перегляду прокрутки і поміщаю її в батьківський список прокрутки. (І роблю прокрутку невидимою).
// 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)
Ви знаєте, що відбувається? Я чітко закликаю deleteView від батьків.