[Android developers blog 学习笔记]android 布局优化:标签include和merge的使用

来源:互联网 发布:pc6下载站,软件 编辑:程序博客网 时间:2024/05/22 15:04

一、include

     1、include的含义,就是把指定的xml文件包含进来。它有两个主要的用处:

      (1、include 主要用来减少重复代码,如果你在xml中定义了一个布局,在其他的xml布局文件中会多次用到,这时候,include就派上用场了。示例代码如下(摘自launcher源码):

     (2、用来定制部分UI,例如,你有一个xml文件,大部分都适用横屏和竖屏的布局,但是有一小部分横竖屏是不一样的。这时候,就可以使用include标签,在 layout-land/ 和 layout-port/ 中定制各自的xml文件。


<com.android.launcher.Workspace    android:id="@+id/workspace"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    launcher:defaultScreen="1">    <include android:id="@+id/cell1" layout="@layout/workspace_screen" />    <include android:id="@+id/cell2" layout="@layout/workspace_screen" />    <include android:id="@+id/cell3" layout="@layout/workspace_screen" /></com.android.launcher.Workspace>

   2、注意事项:

   (1、include 标签中,layout是必须的属性,它指向另一个xml布局。

   (2、include标签可以指定ID,指定之后他会覆盖layout的xml中指定的id。

   (3、include标签中,所有的layout_*的属性都是可用的。


二、merge

     merge的作用是用来减少布局层次。它的意思大概是,merge标签里面的这些布局,都直接作用在他的父布局中。

    如果你的布局中,包含另一个相同的布局,就可以考虑使用merge标签。

    常用的情况:

   1、如果activity的最底层布局是match parent 的FrameLayout, 这时候就可以使用merge标签代替。因为android体统自动给你的activity跟布局包含在一个FrameLayout中。

   2、include 另一个布局,这个布局和它的父布局是相同的Layout, 这时候就可以使用merge代替子Layout


   注意事项:

  1、merge标签只能用在xml中的根标签。

  2、如果使用inflate来引入一个merge的xml文件,必须设置attachToRoot的属性为真。

 3、merge是不能设置背景的。记住,它不是一个ViewGroup


三、android developers blog的相应网址:

http://www.curious-creature.com/2009/02/25/android-layout-trick-2-include-to-reuse/

http://android-developers.blogspot.com.br/2009/03/android-layout-tricks-3-optimize-by.html


0 0