手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android中使用include标签和merge标签重复使用布局
Android中使用include标签和merge标签重复使用布局
摘要:尽管Android提供了各种组件来实现小而可复用的交互元素,你也可能因为布局需要复用一个大组件。为了高效复用完整布局,你可以使用和标签嵌入另...

尽管Android提供了各种组件来实现小而可复用的交互元素,你也可能因为布局需要复用一个大组件。为了高效复用完整布局,你可以使用<include/>和<merge/>标签嵌入另一个布局到当前布局。所以当你通过写一个自定义视图创建独立UI组件,你可以放到一个布局文件里,这样更容易复用。

复用布局因为其允许你创建可复用的复杂布局而显得非常强大。如,一个 是/否 按钮面板,或带描述文本的自定义进度条。这同样意味着,应用里多个布局里共同的元素可以被提取出来,独立管理,然后插入到每个布局里。

创建可复用布局

如果你已经知道哪个布局需要重用,就创建一个新的xml文件来定义布局。如,下面是一个来自G-Kenya代码库里定义标题栏的布局,它可以被插到每个Activity里:

复制代码 代码如下:

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

android:layout_width=”match_parent”

android:layout_height="wrap_content"

android:background="@color/titlebar_bg">

<ImageView android:layout_width="wrap_content"

android:layout_height="wrap_content"

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

</FrameLayout>

根视图应该刚好和你在其他要插入这个视图的视图里相应位置一样。

使用<include/>标签

在你要添加可复用布局的布局里,添加<include/>标签。下面是添加标题栏:

复制代码 代码如下:

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

android:orientation="vertical"

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:background="@color/app_bg"

android:gravity="center_horizontal">

<include layout="@layout/titlebar"/>

<TextView android:layout_width=”match_parent”

android:layout_height="wrap_content"

android:text="@string/hello"

android:padding="10dp" />

...

</LinearLayout>

你同样可以覆盖所有的布局参数(android:layout_*属性)

复制代码 代码如下:

<include android:id=”@+id/news_title”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

layout=”@layout/title”/>

可是,如果你要用include标签覆盖布局属性,为了让其他属性生效,就必须覆盖android:layout_height和android:layout_width。

使用<merge/>标签

<merge/>标签帮助你排除把一个布局插入到另一个布局时产生的多余的View Group.如,你的被复用布局是一个垂直的线性布局,包含两个子视图,当它作为一个被复用的元素被插入到另一个垂直的线性布局时,结果就是一个垂直的LinearLayout里包含一个垂直的LinearLayout。这个嵌套的布局并没有实际意义,而且会让UI性能变差。

为了避免插入类似冗余的View Group,你可以使用<merge/>标签标签作为可复用布局的根节点,如:

复制代码 代码如下:

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

<Button

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/add"/>

<Button

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/delete"/>

</merge>

现在,当你使用include标签插入这个布局到另一个布局时,系统会忽略merge标签,直接把两个Button替换到include标签的位置。

【Android中使用include标签和merge标签重复使用布局】相关文章:

Android4.2中全屏或者取消标题栏的方法总结

Android Spinner 下拉菜单的使用

android开发中常用的Eclipse快捷键详细整理

Android GridView的使用

Android 使用Pull方法解析XML文件的方法

android屏蔽返回键和Home键

Android中使用pull解析器操作xml文件的解决办法

Android下拉列表(Spinner)效果

Android开发笔记之:一分钟学会使用Logcat调试程序的详解

Android应用程序签名步骤及相关知识介绍

精品推荐
分类导航