`

Android里merge和include标签的使用【转】

阅读更多
参考android文档:《Layout Tricks:Merging》 先得说下关于<merge></merge>标签的第一个比较简单的用法。如果我们使用FrameLayout作为activity's content view的父元素(也就是在main.xml里把它写在最外层),那么可以考虑用<merge></merge>替换<framelayout></framelayout>标签。官方文档给出的解释是这样做可以减少一级布局层次达到优化布局的效果。这是文档里关于这部分结论的原文,个人E文水平有限,直接贴出来好了: Obviously, using <merge></merge> works in this case because the parent of an activity's content view is always a FrameLayout. You could not apply this trick if your layout was using a LinearLayout as its root tag for instance. 关于merge和include标签的使用,直接用实例说明吧。 TestMergeInclude.java public class TestMergeInclude extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } main.xml <?xml version="1.0" encoding="utf-8"?><merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:okcancelbar="http://schemas.android.com/apk/res/test.mergeinclude"><imageview android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaletype="center" android:src="@drawable/wallpaper_rainbokeh"></imageview><test.mergeinclude.okcancelbar android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:paddingtop="8dip" android:gravity="center_horizontal" android:background="#AA000000" okcancelbar:oklabel="Save" okcancelbar:cancellabel="Don't save"></test.mergeinclude.okcancelbar></merge> OkCancelBar.java public class OkCancelBar extends LinearLayout { public OkCancelBar(Context context) { super(context); // TODO Auto-generated constructor stub } public OkCancelBar(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub setOrientation(HORIZONTAL); setGravity(Gravity.CENTER); setWeightSum(1.0f); LayoutInflater.from(context).inflate(R.layout.okcancelbar, this, true); TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.OkCancelBar, 0, 0); String text = array.getString(R.styleable.OkCancelBar_okLabel); if(text == null) text = "Ok"; ((Button)findViewById(R.id.okcancelbar_ok)).setText(text); text = array.getString(R.styleable.OkCancelBar_cancelLabel); if(text == null) text = "Cancel"; ((Button)findViewById(R.id.okcancelbar_cancel)).setText(text); array.recycle(); } } okcancelbar.xml <?xml version="1.0" encoding="utf-8"?><merge xmlns:android="http://schemas.android.com/apk/res/android"><include layout="@layout/okcancelbar_button" android:id="@+id/okcancelbar_ok"></include><include layout="@layout/okcancelbar_button" android:id="@+id/okcancelbar_cancel"></include></merge> okcancelbar_button.xml <?xml version="1.0" encoding="utf-8"?> 一点思考: 1.在OkCancelBar类的构造器中,我们看到一段稍微复杂点儿的代码。其实它们并不难,只是通过ID拿到某个特定的Button引用,然后为其设定要显示出来的文字。与直接使用android:text相比,这种设置要累赘得多。所以不妨把这个累赘看成是为利用<merge></merge>的优点所付出的代价。这个优点就是组件重用,我们只在 okcancelbar_button.xml文件里声明了一个Button,但在使用时却拥有了两个(当然可以更多)Button。 2.这里可重用组件(这里的okcancelbar_button)的定义很关键,因为它关联着所有要使用它的功能点。比如:如果你确定在你的应用里,所有使用到这个button的地方需要的显示文字都一样,那你就可以在上面button的定义中再加一个android:text属性,这样就省去了使用时再去逐个设置的麻烦。另外,本例的okcancelbar_button里只定义了一个button,我想这里应该可以扩展到一个布局单元,比如LinearLayout,FrameLayout等等之类的。本人还没尝试,值得一做。 3.关于使用<merge></merge>标签的一些限制: (1)它只能作为XML布局声明的root元素来使用; (2)使用它来inflate一个布局时,必须指定一个ViewGroup实例作为其父元素并且设置attachToRoot属性为true(参考 inflate(int, android.view.ViewGroup, boolean) 方法的说明 )。 http://hi.baidu.com/lck0502/blog/item/f22a1b13dccde8def6039ea4.html
分享到:
评论

相关推荐

    android include merge标签

    `include`和`merge`标签是两个非常重要的布局重用工具,它们极大地提高了代码的可维护性和性能。下面将详细阐述这两个标签的功能、用法以及如何结合使用。 首先,`include`标签的作用是允许你在多个布局文件中复用...

    Android中include和merge标签的使用

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

    android merge和include简单使用

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

    android merge 标签使用介绍

    当我们需要在多个布局中复用一部分视图时,可以使用`&lt;include&gt;`标签来引用一个包含`merge`的布局文件。这样,被引用的视图会直接插入到`include`的位置,而不是创建一个新的层级。 ```xml &lt;!-- reusable_layout....

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

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

    Include和merge标签使用

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

    android xml中include标签的使用

    为了更有效地减少布局层级,可以配合`&lt;merge&gt;`标签使用。`&lt;merge&gt;`标签会删除其本身作为根节点,使得包含的视图直接成为父布局的一部分,避免了额外的ViewGroup层级,从而提高性能。 ```xml &lt;!-- layout_to_include...

    Android UI 优化之merge标签的使用

    如果`content.xml`使用了merge标签,那么在实际运行时,Android系统会直接合并两个布局,避免了LinearLayout的冗余。 ### 3. merge标签的使用方法 #### 3.1 嵌套在&lt;include&gt;标签中 ```xml &lt;include layout="@layout...

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

    总结来说,`&lt;include/&gt;`和`&lt;merge/&gt;`标签是Android开发中的重要布局工具,它们帮助开发者创建可复用、高效的布局结构。`&lt;include/&gt;`标签使得布局复用变得简单,而`&lt;merge/&gt;`标签则有助于优化性能,减少布局层级。在...

    android layout merge

    综上所述,`merge`布局是Android UI开发中的一个重要工具,它有助于提升性能,简化代码,尤其是在使用Genymotion等高性能模拟器进行测试和调试时。熟练掌握`merge`布局的使用,对于提升应用的用户体验和开发效率具有...

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

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

    include 方法使用

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

    UI_include_merge_ViewStub

    `UI_include_merge_ViewStub` 这个主题主要涉及到了三个关键概念:`&lt;include&gt;`标签、`&lt;merge&gt;`标签和`ViewStub`组件。这些元素在构建高效且可维护的布局文件时起着重要作用。 首先,我们来详细了解一下`&lt;include&gt;`...

    Android中Include的使用

    为了解决这个问题,可以配合`&lt;merge&gt;`标签使用,`&lt;merge&gt;`的作用是减少嵌套层级,提高性能。 ```xml &lt;!-- 在要包含的布局中使用&lt;merge&gt; --&gt; &lt;merge xmlns:android="http://schemas.android.com/apk/res/android"&gt; ...

    Include标签学习的demo

    在这个“Include标签学习的demo”中,你将看到如何将这些概念实际应用到Android UI抽样布局中,通过案例来理解它们的工作原理和效果。这个demo可能包含了多个示例页面,展示了`&lt;include&gt;`标签在不同场景下的用法,...

    解析android中include标签的使用

    本篇文章将深入解析Android中的`&lt;include/&gt;`标签的使用方法和应用场景。 首先,`&lt;include/&gt;`标签的基本结构是这样的: ```xml &lt;include layout="@layout/layout_name"/&gt; ``` 这里的`layout="@layout/layout_name...

    include标签的使用

    由于Android系统对硬件的要求较高,并且上层应用都是用Java(效率要比C++低)编写的,对程序的优化就成了...可以从以下几个地方下手:布局优化、数据库优化、使用异步加载数据、使用缓存技术、算法代码优化、使用线程池

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

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

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

    `merge`和`include`标签是Android XML布局文件中用于优化布局的两个关键工具。本文将详细探讨这两个标签如何协同工作,以及它们在优化布局时的作用。 `merge`标签主要设计用来减少布局层次,提高渲染效率。当我们在...

Global site tag (gtag.js) - Google Analytics