`
liujianguangaaa
  • 浏览: 235203 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Android layout 优化之二:使用include和merge 标签

阅读更多

使用<include /> 标签来重用layout代码
如果在一个项目中需要用到相同的布局设计,可以通过<include /> 标签来重用layout代码,该标签在android开发文档中没有相关的介绍。在android主屏程序中 用到了这个标签:

<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>

这样可以多次引用一个布局片段而不用重复的复制、粘贴。通过include标签也可以覆写一些属性的值,例如上面的示例就覆写了引用的layout中的id值。下面是另外一个示例:

<include android:layout_width="fill_parent" layout="@layout/image_holder" />
<include android:layout_width="256dip" layout="@layout/image_holder" />

使用<merge /> 标签来减少视图层级结构


在Android layout文件中需要一个顶级容器来容纳其他的组件,而不能直接放置多个组件,例如如下的代码
:

< FrameLayout   xmlns:android = "http://schemas.android.com/apk/res/android"

     android:layout_width = "fill_parent"

     android:layout_height = "fill_parent" >

     < ImageView

         android:layout_width = "fill_parent"

         android:layout_height = "fill_parent"  

         android:scaleType = "center"

         android:src = "@drawable/golden_gate"   />

     < TextView

         android:layout_width = "wrap_content"

         android:layout_height = "wrap_content"

         android:text = "Golden Gate"   />

</ FrameLayout >


上面的代码显示一个图片,然后在图片上方显示一个title, 结果如下图:


android activity的默认布局为FrameLayout,这样上面的布局代码就有2层FrameLayout
,通过HierarchyViewer
工具看到的结构如下:


如果能在layout文件中把FrameLayout
声明去掉就可以进一步优化布局代码了。 但是由于布局代码需要外层容器容纳,如果
直接删除FrameLayout
则该文件就不是合法的布局文件。这种情况下就可以使用<merge /> 标签了。
修改为如下代码就可以消除多余的FrameLayout了:

< merge   xmlns:android = "http://schemas.android.com/apk/res/android" >

     < ImageView

         android:layout_width = "fill_parent"

         android:layout_height = "fill_parent"  

         android:scaleType = "center"

         android:src = "@drawable/golden_gate"   />

     < TextView

         android:layout_width = "wrap_content"

         android:layout_height = "wrap_content"

         android:text = "Golden Gate"   />

</ merge >

通过HierarchyViewer工具看到的结构如下:


merge也有一些使用限制: 只能用于xml layout文件的根元素;在代码中inflate一个以merge为根元素的
布局文件时候,你需要指定一个ViewGroup 作为其容器,并且要设置attachToRoot 为true,详细信息参考
inflate()函数doc。

上面示例项目代码:
http://progx.org/users/Gfx/android/MergeLayout.zip
分享到:
评论

相关推荐

    Android中include和merge标签的使用

    `include`和`merge`标签是Android XML布局文件中两个非常重要的元素,它们帮助开发者实现布局的重用和优化,提高代码的可维护性和效率。本篇文章将深入探讨这两个标签的使用方法以及它们在Android开发中的作用。 ##...

    android include merge标签

    需要注意的是,`merge`标签必须作为顶级元素,并且不能包含根布局属性(如`android:layout_width`和`android:layout_height`)。此外,由于`merge`标签不会生成实际的View对象,所以它不能直接设置属性,所有属性...

    Android UI 优化之merge标签的使用

    - 当merge作为`&lt;include&gt;`的子元素时,`&lt;include&gt;`的属性(如`android:layout_width`、`android:layout_height`)将应用于merge的子视图,而不是merge本身。 - 为了避免混淆,避免在同一个布局文件中同时使用merge和...

    Include和merge标签使用

    在Android开发中,`&lt;include&gt;`和`&lt;merge&gt;`标签是两种非常重要的布局组合工具,它们可以帮助开发者提高代码复用性,减少布局嵌套,从而优化应用性能和UI设计。让我们深入探讨这两种标签的使用方法及其优化布局的作用...

    android merge 标签使用介绍

    在Android开发中,`merge`标签是一个非常实用的布局优化工具,它可以帮助开发者减少XML布局文件中的层级,提高应用的性能。本篇文章将详细介绍`merge`标签的使用方法及其优势。 `merge`标签最初被引入是为了减少...

    android中include和merge标记的区别和使用

    `include`和`merge`标签是Android XML布局文件中两个非常重要的元素,它们帮助开发者实现布局的重用和优化,提高代码的可维护性和效率。接下来,我们将深入探讨这两个标记的区别和使用方法。 ### `include`标签 `...

    android merge和include简单使用

    在Android开发中,`merge`和`include`是两种非常重要的布局管理工具,它们能够帮助开发者更有效地管理和优化布局文件,提高代码的可维护性和性能。这篇博客将深入讲解这两个概念,以及它们如何在实际项目中应用。 ...

    android layout merge

    在Android开发中,布局(Layout)是构建用户界面的关键元素,而`merge`布局是一种优化UI性能和提高代码可读性的特殊技术。本篇文章将深入探讨`merge`布局的使用,以及它如何与Genymotion模拟器关联。 `merge`布局在...

    android xml中include标签的使用

    通过合理地使用`&lt;include /&gt;`和`&lt;merge&gt;`,以及结合其他技术如Data Binding,我们可以构建出更加高效、灵活的用户界面。在实际开发中,要根据项目需求灵活运用这些技巧,以提升应用的性能和用户体验。

    Android中使用include标签和merge标签重复使用布局

    你还可以在`&lt;include/&gt;`标签内覆盖布局参数,比如调整宽度和高度,但这需要同时指定`android:layout_width`和`android:layout_height`: ```xml &lt;include android:id="@+id/news_title" android:layout_width=...

    include 方法使用

    这个项目可能包括了主布局文件、子布局文件以及相应的Java代码,用于演示`include`标签的使用和功能。 总之,熟练掌握`include`标签的使用能够极大地提高Android应用的开发效率和代码质量。正确地应用`include`标签...

    Android布局技巧之include、merge与ViewStub标签的巧用

    Android官方提供了一些工具来优化布局管理,包括`include`、`merge`和`ViewStub`标签。这三个标签分别在不同的场景下发挥着重要作用,提高了代码的可读性和效率。 ### 1. `include`标签 `include`标签允许开发者将...

    Android开发之merge结合include优化布局

    merge结合include优化android布局,效果不知道,个人感觉使用上也有很大的局限,不过还是了解一下,记录下来。 布局文件都要有根节点,但android中的布局嵌套过多会造成性能问题,于是在使用include嵌套的时候我们...

    android layout布局分析与优化

    6. **使用&lt;merge&gt;标签**:利用&lt;merge&gt;标签解决由include或自定义组合ViewGroup带来的多余层级问题。 7. **使用标签**:在需要动态加载布局时使用,避免预先加载不必要的View组件。 #### 六、ListView优化技巧 1. *...

    UI_include_merge_ViewStub

    在实际开发中,结合使用`&lt;include&gt;`、`&lt;merge&gt;`和`ViewStub`,我们可以有效地组织和优化布局,提高应用的性能和用户体验。通过合理利用这些工具,可以避免过度的视图嵌套,减少内存消耗,同时保持代码的整洁和可维护...

    Android中Include的使用

    `&lt;include&gt;`标签可以通过`android:layout_width`和`android:layout_height`等属性设置被包含布局的大小,也可以自定义属性来传递参数。例如: ```xml &lt;!-- 被包含的布局 --&gt; &lt;layout xmlns:android=...

    Include标签学习的demo

    `&lt;include&gt;`标签常与`&lt;merge&gt;`、`&lt;ViewStub&gt;`等标签结合使用,以进一步优化布局性能。`&lt;merge&gt;`可以避免不必要的嵌套,减少视图层次,提高渲染效率;`&lt;ViewStub&gt;`则可以延迟加载视图,直到真正需要时才初始化,节省...

    Android 布局优化

    本文将深入探讨如何利用`include`、`ViewStub`和`merge`标签进行Android布局优化。 首先,`include`标签是一种强大的布局重用机制。在大型应用中,往往有许多相似或重复的布局元素,如导航栏、头部视图等。通过`...

    Android抽象布局——include、merge 、ViewStub详解

    在Android开发中,为了提高代码复用性和优化布局性能,Android提供了三种特殊的抽象布局:`&lt;include/&gt;`、`&lt;merge/&gt;` 和 `&lt;ViewStub/&gt;`。这些布局元素都有各自的特性和用途,使得开发者能够更好地管理和优化应用的...

    Android应用源码之IncludeDemo.zip

    为了优化性能和减少视图层次,通常会在被包含的布局文件中使用`&lt;merge&gt;`标签作为根元素。`&lt;merge&gt;`会消除包含它的布局的额外层级,使布局树更扁平。 ```xml &lt;!-- header.xml --&gt; &lt;merge xmlns:android=...

Global site tag (gtag.js) - Google Analytics