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

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>标签内的控件就按照线性布局排列,如图:


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值