膨胀布局的行为不同于静态XML布局



我有一个布局,我使用作为父布局模板。根据我启动的Activity,我想在父模板中用一个膨胀的视图填充LinearLayout的内容。现在,如果我将父布局和子布局放入同一个XML文件中,看起来就不错了。但如果我在父布局上使用setContentView(),然后膨胀子视图并将其添加到父布局的相同位置,事情就行不通了。我将子视图放入的LinearLayout和作为子视图根的LinearLayout都有android:layout_height="fill_parent",但是子视图无法填充它添加到的LinearLayout。

有什么明显的我做错了吗?记住,这些布局应该看起来相同,只是一个方法是静态的,另一个是动态的。我认为这与计算父布局尺寸而在子视图膨胀后不更新有关。

谢谢!

好了,我明白了。

当您对子视图进行充气时,您需要将子视图的父视图传递给充气器,以便充气器知道该将其设置为多大。我用空父元素填充,然后将子元素添加到父元素中,但这导致子元素的行为就像我将布局参数设置为"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);

最新更新