1.<include /> 标签

<include /> 标签主要解决布局重用的问题,在我们大多数的 app 中的标题栏布局都是相似的,这个时候就可以用 <include /> 标签重用布局文件了。使用方法如下:

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/include_head"/>
</LinearLayout>

2.<merge /> 标签

<merge /> 标签的作用可以减少 UI 的层级,假如要在主布局 LinearLayout 中引入同样是 LinearLayout 的 include 布局,那么便可以将引入布局的最外层布局设置为 <merge /> 标签,这样系统将会自动忽略 <merge /> 节点,从而达到减少布局层次的目的。比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hello" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="world" />
</merge>

3.<ViewStub /> 标签

<ViewStub /> 标签的作用就是延迟加载布局资源,从而达到加快 UI 初始化速度目的,适用场景如进度条,加载失败布局等一些一开始不需要加载的布局。如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.juhe.generaldemo.MainActivity">
<ViewStub
android:id="@+id/viewstub"
android:layout="@layout/viewstub_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>

想要加载布局时:

1
2
ViewStub viewStub = (ViewStub) findViewById(R.id.viewstub);
viewStub.inflate();