美文网首页
Android 布局优化 Merge的使用

Android 布局优化 Merge的使用

作者: AuthFailure | 来源:发表于2020-08-28 19:21 被阅读0次

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

    一、Merge的作用

    The <merge /> tag helps eliminate redundant view groups in your view hierarchy when including one layout within another.
    大意是,merge标签是用来帮助在视图树中减少重复布局的,当一个layout包含另外一个layout时。

    二、示例

    • 不使用merge

    layout1.xml

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

    layout2.xml:

    <FrameLayout>
       <TextView />
    </FrameLayout>
    

    实际效果:

    <FrameLayout>
       <FrameLayout>
          <TextView />
       </FrameLayout>
    </FrameLayout>
    
    • 使用merge

    layout1.xml

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

    layout2.xml:

    <merge>
       <TextView />
    </merge>
    

    实际效果:

    <FrameLayout>
       <TextView />
    </FrameLayout>
    

    三、要点

    1. merge必须放在布局文件的根节点上。
    2. merge并不是一个ViewGroup,也不是一个View,它相当于声明了一些视图,等待被添加。
    3. merge标签被添加到A容器下,那么merge下的所有视图将被添加到A容器下。
    4. 因为merge标签并不是View,所以在通过LayoutInflate.inflate方法渲染的时候, 第二个参数必须指定一个父容器,且第三个参数必须为true,也就是必须为merge下的视图指定一个父亲节点。
    5. 因为merge不是View,所以对merge标签设置的所有属性都是无效的。
    6. 在AS中无法预览怎么办?使用parentTag指定被装在的parent的布局容器类型,例如 tools:parentTag="android.widget.FrameLayout",那么就可以预览到当前布局被装在进FrameLayout时候的效果。

    相关文章

      网友评论

          本文标题:Android 布局优化 Merge的使用

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