Android布局优化Merge的使用

从本文你可以快速了解布局中merge标签的作用,以及使用。

一、Merge的作用

先看下官方的翻译:
The tag helps eliminate redundant view groups in your view hierarchy when including one layout within another.
当一个 layout 包含在另外一个 layout 内部的时时候,使用 merge 标签是可以减少布局层叠,。

二、示例

我们先看一个简单的例子,在不使用 merge 的情况下通过 include 标签加载其它layout文件时

<FrameLayout>
   <include layout="@layout/layout2"/>
</FrameLayout>

layout2.xml:

<FrameLayout>
   <TextView />
</FrameLayout>

最终的实际效果如下:中间会嵌套一层多余的 FrameLayout

<FrameLayout>
   <FrameLayout>
      <TextView />
   </FrameLayout>
</FrameLayout>

使用 merge 标签更改 layout2

layout2.xml:

<merge>
   <TextView />
</merge>

实际效果:

<FrameLayout>
   <TextView />
</FrameLayout>

三、要点

merge 的使用要求

  • merge必须放在布局文件的根节点上。
  • merge并不是一个ViewGroup,也不是一个View,它相当于声明了一些视图,等待被添加。
  • merge标签被添加到A容器下,那么merge下的所有视图将被添加到A容器下。
  • 因为merge标签并不是View,所以在通过LayoutInflate.inflate方法渲染的时候, 第二个参数必须指定一个父容器,且第三个参数必须为true,也就是必须为merge下的视图指定一个父亲节点。
  • 因为merge不是View,所以对merge标签设置的所有属性都是无效的。

四、心得

可以在使用组合控件形式的自定义view中使用 merge 标签。以前不了解merge时的做法是,创建类,继承RelativeLayout,然后创建layout.xml,根布局也是RelativeLayout,在然后在布局中写入其他控件,接着就是在自定义view中inflate布局进来,之后巴拉巴拉一堆逻辑。

所以应该在xml布局中根节点可以使用merge来减少重复RelativeLayout布局。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值