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

时间:2011-10-16 19:46:21

标签: android

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

有什么明显的东西我没做错吗?请记住,这些布局应该看起来相同,只有一种方法是静态的,另一种是动态的。我假设这与计算的父布局维度有关,并且在子视图膨胀后没有更新。

谢谢!

1 个答案:

答案 0 :(得分:1)

好的,我想出来了。

当你给孩子充气时,你需要将孩子的父视图传递给inflater,以便inflater知道它有多大。我正在使用null父进行膨胀,然后将子进程添加到父进程,但这导致子进程表现得好像我将布局参数设置为“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);