本文原创, 转载请注明出处http://blog.csdn.net/qinjuning


译二:


使用<include />标签复用布局文件



翻译地址:http://developer.android.com/training/improving-layouts/reusing-layouts.html#Merge



尽管Android通过内置了各种各样的控件提供了微小、可复用的交互性元素,也许你需要复用较大

组件 ----某些特定布局文件 。为了更有效率复用的布局文件,你可以使用<include />以及<merge />

标签将其他的布局文件入到当前的布局文件中。


复用布局文件是一种特别强大的方法,它允许你创建可复用性的布局文件。例如,一个包含“Yse”or“No”的

Button面版,或者是带有文字说明的 Progressbar。复用布局文件同样意味着你应用程序里的任何元素都能从

繁杂的布局文件提取出来进行单独管理,接着你需要做的只是加入这些独立的布局文件(因为他们都是可复用地)。

因此,当你通过自定义View创建独立的UI组件时,你可以复用布局文件让事情变得更简单。

1、创建一个可复用性的布局文件


如果你已经知道复用布局的”面貌”,那么创建、定义布局文件( 命名以”.xml”为后缀)。例如,这里是一个来自

G-Kenya codelab 的布局文件,定义了在每个Activity中都要使用的一个自定义标题 (titlebar.xml):由于这些

可复用性布局被添加至其他布局文件中,因此,它的每个根视图(root View)最好是精确(exactly)的。

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


2、使用<include />标签


在需要添加这些布局的地方,使用<include />标签 。 例如,下面是一个来自G-Kenya codelab的布局文件,

它复用了上面列出的“title bar”文件, 该布局文件如下:

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

你也可以在<include />节点中为被添加的布局文件的root View定义特别标识,重写所有layout参数即可(任何

以“android:layout_”为前缀的属性)。例如:

<include android:id=”@+id/news_title”         android:layout_width=”match_parent”         android:layout_height=”match_parent”         layout=”@layout/title”/>

3、使用<merge />标签


当在布局文件中复用另外的布局时, <merge />标签能够在布局层次消除多余的视图元素。例如,如果你的

主布局文件是一个垂直地包含两个View的LinearLayout,该布局能够复用在其他布局中,而对任意包含两个View的

布局文件都需要一个root View(否则, 编译器会提示错误)。然而,在该可复用性布局中添加一个LinearLayout

作为root View,将会导致一个垂直的LinearLayout包含另外的垂直LinearLayout。内嵌地LinearLayout只能减缓

UI效率,其他毫无用处可言。

该复用性布局利用.xml呈现如下:

<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="horizontal">    <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"/></LinearLayout>


为了避免冗余的布局元素,你可以使用<merge />作为复用性布局文件地root View 。例如:
使用<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 />节点。


另外的,按需加载View视图 ,请看:

http://developer.android.com/training/improving-layouts/loading-ondemand.html

如何使ListView流畅滑动 ,请看:

http://developer.android.com/training/improving-layouts/smooth-scrolling.html




更多相关文章

  1. 运行时改变Button图片的android:drawableTop
  2. android apk包签名和align
  3. 用RelativeLayout布局可以在imageview中写上文字
  4. Android(安卓)ApiDemos 系列解析【View-ImageView/ImageButton】
  5. Android(安卓)ViewPager 几种开发案例的使用
  6. Android(安卓)Studio Error:Connection timed out: connect.解决
  7. 让一个小图片重复出现,形成一张大图片
  8. android上不错的开源库
  9. Android头部视差效果的实现方式

随机推荐

  1. Android源码分析:TabHost
  2. Android中读写文件
  3. Android(安卓)Skia编程系列(一):Hello Skia
  4. 如何自学 Android(安卓)编程?
  5. Android的WiFi子系统架构
  6. 做纯粹的 Android
  7. android 图片剪裁 ,从android自带图库提取
  8. android桌面画面循环滑动
  9. Android资源文件夹及资源文件的详细介绍
  10. Android定时任务的实现方式