在运行时动态加载不同视图的最轻量级方法?

时间:2014-10-24 08:03:21

标签: android android-layout

有时我可能需要为一个页面加载不同的视图,通常我在layout xml文件中创建了一个容器元素,例如,

<FrameLayout android:id="@+id/container
    android:layout_width="match_parent"
    android:layout_height="wrap_content/>

以上FrameLayout可以是LinearLayoutRelativeLayout或其他任何内容。在运行时,使用此容器作为动态添加视图的根。它工作正常但这个容器布局增加了一个级别的视图层次结构。

xml中有merge个元素,但无法以编程方式合并布局。

ViewStub,仍然无法以编程方式加载不同的布局或视图

我很好奇是否有更轻量级的方式?

1 个答案:

答案 0 :(得分:0)

您可以正确使用<merge>,但必须确保inflate调用已指定父级,并且必须将膨胀的布局添加到该父级(将true传递为第三个参数:

LinearLayout somecontainer = ...
getLayoutInflater().inflate(R.layout.your_merge_layout, somecontainer, true);

然后,您将无法获得任何额外的深度,<merge>的所有子项将直接添加到somecontainer