Android|Android 布局优化 Merge的使用
从本文你可以快速了解布局中merge标签的作用,以及使用。
一、Merge的作用
【Android|Android 布局优化 Merge的使用】The二、示例tag helps eliminate redundant view groups in your view hierarchy when including one layout within another.
大意是,merge标签是用来帮助在视图树中减少重复布局的,当一个layout包含另外一个layout时。
- 不使用merge
layout2.xml:
实际效果:
- 使用merge
layout2.xml:
实际效果:
三、要点
- merge必须放在布局文件的根节点上。
- merge并不是一个ViewGroup,也不是一个View,它相当于声明了一些视图,等待被添加。
- merge标签被添加到A容器下,那么merge下的所有视图将被添加到A容器下。
- 因为merge标签并不是View,所以在通过LayoutInflate.inflate方法渲染的时候, 第二个参数必须指定一个父容器,且第三个参数必须为true,也就是必须为merge下的视图指定一个父亲节点。
- 因为merge不是View,所以对merge标签设置的所有属性都是无效的。
- 可以在使用组合控件形式的自定义view中使用。以前不了解merge时的做法是,创建类,继承RelativeLayout,然后创建layout.xml,根布局也是RelativeLayout,在然后在布局中写入其他控件,接着就是在自定义view中inflate布局进来,之后巴拉巴拉一堆逻辑。
所以应该在xml布局中根节点可以使用merge来减少重复RelativeLayout布局。 - 在AS中无法预览怎么办?使用
parentTag
指定被装在的parent的布局容器类型,例如tools:parentTag="android.widget.FrameLayout"
,那么就可以预览到当前布局被装在进FrameLayout时候的效果
参考:
官方文档
What is the purpose of Android'stag in XML layouts?
Android 布局优化之include与merge
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 数据库设计与优化
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)