有时我可能需要为一个页面加载不同的视图,通常我在layout xml文件中创建了一个容器元素,例如,
<FrameLayout android:id="@+id/container
android:layout_width="match_parent"
android:layout_height="wrap_content/>
以上FrameLayout
可以是LinearLayout
,RelativeLayout
或其他任何内容。在运行时,使用此容器作为动态添加视图的根。它工作正常但这个容器布局增加了一个级别的视图层次结构。
xml中有merge
个元素,但无法以编程方式合并布局。
有ViewStub
,仍然无法以编程方式加载不同的布局或视图
我很好奇是否有更轻量级的方式?
答案 0 :(得分:0)
您可以正确使用<merge>
,但必须确保inflate
调用已指定父级,并且必须将膨胀的布局添加到该父级(将true
传递为第三个参数:
LinearLayout somecontainer = ...
getLayoutInflater().inflate(R.layout.your_merge_layout, somecontainer, true);
然后,您将无法获得任何额外的深度,<merge>
的所有子项将直接添加到somecontainer
。