2015-04-28 40 views
1

我在我的佈局以下層次:removeAllViews()對子視圖有什麼作用?

ScrollView 
    RadioGroup 
     RelativeLayout 
      RadioButton 
      ImageView 
     RelativeLayout 
      RadioButton 
      ImageView 
      ... 

現在的問題是,它看起來很好定義的XML編輯器,RadioButtonsImageViews有默認值(佔位符),但是當我發起一個活動,在RadioGroup上撥打removeAllViews(),全部ImageViews消失。有趣的是,所有按鈕都獲得了新的值,只有ImageViews沒有更新(設置新的源圖像沒有結果)。因此,我的問題是:是否removeAllViews()完全擦除子視圖(就像它們從來沒有存在於佈局XML文件中一樣),或者只是刪除一些值而留下要定義的視圖參數(如設置新源圖像或新按鈕描述)?

回答

4

official documentationremoveAllViews()

調用此方法來刪除從所有的ViewGroup子視圖。

調用此方法將會把所有孩子的查看到null,所以它會從自身刪除子視圖,而這個孩子變得無效(或不被認爲是孩子),但不喜歡它從來沒有存在過在XML文件中。

這是removeAllViews() code

public void removeAllViews() { 
    removeAllViewsInLayout(); 
    requestLayout(); 
    invalidate(); 
} 

正如你可以removeAllViewsInLayout()方法看,這孩子值設置爲空:

children[i] = null;

+0

好吧,這說明了一點。那麼讓孩子們查看可用和可用的相反順序是什麼? – AbreQueVoy

+0

我不認爲'removeAllViews();'有相反的意思,你可以使用'addView();'將視圖再次添加到ViewGroup中。 – Rami

相關問題