2011-10-16 105 views
0

我有一個佈局,我用作父佈局模板。根據我啓動的活動,我想用膨脹的視圖在父模板中填充LinearLayout的內容。現在,如果我將父級和子級佈局放入同一個XML文件中,事情看起來不錯。但是,如果我在父佈局上使用setContentView(),然後膨脹子視圖並將其添加到父佈局中的相同位置,則不起作用。我將子視圖放入的LinearLayout和作爲子視圖根的LinearLayout都有android:layout_height="fill_parent",但子視圖無法填充添加到其中的LinearLayout。膨脹的佈局行爲不同於靜態XML佈局

有沒有什麼明顯的我不正確的做法?請記住,這些佈局應該看起來完全相同,只有一種方法是靜態的,而另一種是動態的。我認爲這與父級佈局維度有關,並且在子視圖膨脹後沒有更新。

謝謝!

回答

1

好的,我明白了這一點。

當您給孩子充氣時,您需要將孩子的父視圖傳遞給充氣器,以便充氣器知道充氣器有多大。我正在用一個空父對象進行膨脹,然後將該子對象添加到父對象中,但導致子對象的行爲就像我將佈局參數設置爲「wrap_content」一樣。

錯誤:

ViewGroup parent = (ViewGroup) root.findViewById(R.id.parent); 
parent.removeAllViews(); 
LinearLayout child; 
child = (LinearLayout) inflater.inflate(R.layout.child, null); 
parent.addView(child); 

正確:

ViewGroup parent = (ViewGroup) root.findViewById(R.id.parent); 
parent.removeAllViews(); 
(LinearLayout) inflater.inflate(R.layout.child, parent);