为了账号安全,请及时绑定邮箱和手机立即绑定

Android的<merge>标签在XML布局中的用途是什么?

Android的<merge>标签在XML布局中的用途是什么?

至尊宝的传说 2020-02-04 15:51:27
我已经阅读了Romain Guy在<merge />标记上的帖子,但是我仍然不明白它的用处。它是<Frame />标签的某种替代品,还是这样使用:<merge xmlns:android="...."><LinearLayout ...>    .    .    .</LinearLayout></merge>那么<include />代码在另一个文件中?
查看完整描述

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 -您可以使用它来替换不会为视图的外观/行为添加任何有用内容的任何布局。


查看完整回答
反对 回复 2020-02-04
?
精慕HU

TA贡献1845条经验 获得超8个赞

blazeroni已经很清楚了,我只想补充几点。

  • <merge> 用于优化布局,用于减少不必要的嵌套。

  • 当将包含<merge>标签的布局添加到另一个布局中时,将<merge>删除该节点,并将其子视图直接添加到新的父视图中。


查看完整回答
反对 回复 2020-02-04
  • 3 回答
  • 0 关注
  • 887 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信