追求精益求精的程序员,项目开发完成怎么能少的了优化,偶然间发现一个比较不错的android 布局优化神器,merge标签,简单实用,下面就跟大家分享一下: merge是什么?merge的使用?
一、merge是什么
merge直译过来是合并的意思,在 我们的布局中就是合并多余的层级。merge不是view,也不是viewGroup,它只是声明一些试图等待被添加。
二、merge的使用
1.根布局为FrameLayout的情况下
正常布局未使用merge标签
通过工具查看视图结构(这个工具的使用方法在我的另一篇文章中点击打开链接)是这样的:我们会发现,这样简单的页面布局,使用了两个FrameLayout节点,有一个多余的节点。
关键!关键!关键!我们直接把根布局的FrameLayout换成merge标签:
神奇的事就这样发生了,我们再通过工具查看页面结构:
使用完merge标签后,少了一层FrameLayout的渲染。
2.当子控件完全不需要依赖父容器时,比如一个页面只有一个textView 像这样:
页面结构是这样的:
这种情况下 我们可以吧</RelativeLayout>直接换成</merge>
聪明的你,看到这里已经箱单了结果,没错就是你想的那样,我们又省去了一个RelativeLayout的节点
还有其他的情况下课使用merge标签,比如说两个LinnerLayout嵌套,自定义view的情况,与include仪器使用时,只要明白了merge的思想,我想你会用的得心应手的。
总结:
1.merge标签必须放到布局的根节点上
2.merge标签不是view,也不是viewGroup,它只是一个声明了一个视图等待被添加
3.当LayoutInflate加载view中使用的merge标签时,第二个参数不能为null,第三个参数设为true LayoutInflater.from(context).inflate(R.layout.merge_layout_view, this, true);