第一個小背景:先調用小孩父母的removeView()第一個
我有一個滾動視圖內的佈局。首先,當用戶在屏幕上滾動時,滾動視圖會滾動。但是,在一定數量的滾動後,我將禁用滾動視圖上的滾動,將「滾動焦點」移動到子佈局內的web視圖上。這樣,滾動視圖就會粘住,所有滾動事件都會轉到其中的webview。因此,對於解決方案,當達到滾動閾值時,我從滾動視圖中移除子佈局,並將其放置在滾動視圖的父級(並使滾動視圖不可見)。
// 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 - >滾動視圖 - > 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。
+1 getParent()是這裏的寶石。 –
解決方案是正確的,但爲什麼「scollView.removeView(scrollChildLayout)」不起作用?兩條線不應該是一樣的嗎? –
@ andrea.spot,看起來像'scrollView.removeView(scrollChildLayout)'試圖刪除scrollView的孩子,而不是從其父ViewGroup –