Android布局优化 之 标签使用详解

1.为什么要使用<merge>

为了避免嵌套过多无用布局,嵌套的布局会让View树的高度变得越来越高,应该尽量减少布局的层级来优化布局。


2.什么情况下使用<merge>

1.如果本打算用FrameLayout作为界面的根布局时,要用<merge>标签作为根节点,因为View树的ContentView本身就是个FrameLayout,如图:




2.如果打算用RelateLayout或Linearlayout作为界面根布局时,界面中某些可复用的或逻辑独立的布局用<include>导入,<include>导入的布局可以考虑用<merge>作为根节点。现在有个问题:<merge>根节点内的控件怎么布局呢?


<merge>根节点内的控件布局取决于<include>这个布局的父布局是哪个布局:


merge_in_layout.xml

    <?xml version="1.0" encoding="utf-8"?>
    <merge xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_gravity="center_horizontal"
            android:text="第一个标签" />
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_gravity="center_horizontal"
            android:text="第二个标签" />
    </merge>

父布局是RelateLayout时:

activity_merge_in_relate_layout.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.android.merge.MergeInRelateLayoutActivity">
        <include layout="@layout/merge_in_layout"/>
    </RelativeLayout>




<merge>标签内的控件就按照相对布局排列,如图:



父布局是LinearLayout时:

activity_merge_in_linear_layout.xml


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <include layout="@layout/merge_in_layout" />
    </LinearLayout>




<merge>标签内的控件就按照线性布局排列,如图:


---------------------
作者:啸饮流云
来源:CSDN
原文:https://blog.csdn.net/xiaoyinliuyun/article/details/73480444
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-06-30 18:04  天涯海角路  阅读(310)  评论(0)    收藏  举报