2011-10-16 72 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);