美文网首页Android
Android 布局优化之-include、merge、View

Android 布局优化之-include、merge、View

作者: 可乐_JS | 来源:发表于2020-08-21 11:29 被阅读0次
    • 上篇文章中优化了无网络布局那块的东西,这篇简单介绍下布局优化,也就是Android布局中常用到的include、merge、ViewStub标签的使用
    1.include:
    • 通常使用在多处重复使用到的布局,将重复的布局部分抽离出来到一个单独的布局,然后在各个重复使用到的地方include下即可
    • 在具体的使用中可以注意下以下几点:
      1、抽出来需要include的布局可以将最外层的布局使用merge,这也是merge的作用所在,最终layout的结果就是将 merge中的内容直接放置到include的位置,这样可以省去多余的嵌套;
      2、当然也不用刻意的去使用merge,它可以当做是用来在include中替换FrameLayout的;
    • 使用场景:标题栏(TitleBar)、底部常用确认和取消按钮等等
    2.merge:
    • 通常是来用配合include来使用的
    • 最常见的用处就是替换掉FrameLayout布局,官方的说法是这样可以减少一级布局层次,达到布局优化的效果
    3.ViewStub:
    • ViewStub可以理解成一个非常轻量级的View,与其他的控件一样,有着自己的属性及特定的方法。当ViewStub使用在布局文件中时,当程序inflate布局文件时,ViewStub本身也会被解析,且占据内存空间

    • 让ViewStub可见有两种方法: 第一是通过setVisibility,第二种就是通过inflate()方法。但是这两句代码不能共存,因为inflate方法只能调用一次,而setVisibility实际上会间接调用inflate

    • 对ViewStub的inflate操作只能进行一次,因为inflate的时候是将其指向的布局文件解析inflate并替换掉当前ViewStub本身(由此体现出了ViewStub“占位符”性质),一旦替换后,此时原来的布局文件中就没有ViewStub控件了,因此,如果多次对ViewStub进行infalte,会出现错误信息:ViewStub must have a non-null ViewGroup viewParent。

    • 上面所讲到的ViewStub指向的布局文件解析inflate并替换掉当前ViewStub本身,并不是完全意义上的替换(与include标签还不太一样),替换时,布局文件的layout params是以ViewStub为准,其他布局属性是以布局文件自身为准。

    • ViewStub不能与merge标签一起使用

    • 使用场景:无网络、空数据、未登录布局等等

    相关文章

      网友评论

        本文标题:Android 布局优化之-include、merge、View

        本文链接:https://www.haomeiwen.com/subject/lchujktx.html