如果你已经知道你需要重用的 Layout, 就先创建一个新的 XML 文件并定义 Layout 。
比如:
<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> 标签, 可以在 Layout 中添加可重用的组件。 比如, 这里有一个Layout 需要包含
上面的那个标题栏:
<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>
你也可以覆写被添加的 Layout 的所有 Layout 参数(任何 android:layout_* 属性) , 通过在 <include/> 中声明他们来完成。
比如:
<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/> 标签在你嵌套 Layout 时取消了 UI 层级中冗余的 ViewGroup 。
比如, 如果你有一个 Layout 是一个竖直方向的LinearLayout, 其中包含两个连续的 View 可以在别的 Layout 中重用, 那么你会做一个 LinearLayout 来包含这两个 View ,以便重用.不过,当使用一个 LinearLayout 作为另一个 LinearLayout 的根节 点时,这种嵌套 LinearLayout 的方式除了减慢你的 UI 性能外没有任何意义。为了避免这种情况, 你可以用 <merge> 元素来替代可重用 Layout 的根节 点。 例如:
<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>
现在,当你要将这个Layout包含到另一个Layout中时(并且使用了 <include/> 标签),系统会忽略 <merge> 标签,直接把两个 Button 放到 Layout 中 <include> 的所在位置。
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>