3 回答
TA贡献1785条经验 获得超4个赞
<merge/> 之所以有用,是因为它可以摆脱不需要的ViewGroup,即仅用于包装其他视图且本身没有任何作用的布局。
例如,如果<include/>要从另一个文件中进行布局而不使用合并,则这两个文件可能看起来像这样:
layout1.xml:
<FrameLayout>
<include layout="@layout/layout2"/>
</FrameLayout>
layout2.xml:
<FrameLayout>
<TextView />
<TextView />
</FrameLayout>
在功能上等效于以下单个布局:
<FrameLayout>
<FrameLayout>
<TextView />
<TextView />
</FrameLayout>
</FrameLayout>
layout2.xml中的那个FrameLayout可能没有用。 <merge/>帮助摆脱它。这是使用合并的样子(layout1.xml不变):
layout2.xml:
<merge>
<TextView />
<TextView />
</merge>
这在功能上等效于以下布局:
<FrameLayout>
<TextView />
<TextView />
</FrameLayout>
但是由于您正在使用<include/>,因此可以在其他地方重复使用布局。它不必用于仅替换FrameLayouts -您可以使用它来替换不会为视图的外观/行为添加任何有用内容的任何布局。
TA贡献1845条经验 获得超8个赞
blazeroni已经很清楚了,我只想补充几点。
<merge>
用于优化布局,用于减少不必要的嵌套。当将包含
<merge>
标签的布局添加到另一个布局中时,将<merge>
删除该节点,并将其子视图直接添加到新的父视图中。
- 3 回答
- 0 关注
- 897 浏览
添加回答
举报