ViewStub主要用于提升布局性能,当需要显示某些元素的时候再去加载。
- 1,在布局文件中使用ViewStub标签
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.droidyue.viewstubsample.MainActivity">
<Button
android:id="@+id/clickMe"
android:text="Hello World!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ViewStub
android:id="@+id/myViewStub"
android:inflatedId="@+id/myInflatedViewId"
android:layout="@layout/include_merge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/clickMe" />
</RelativeLayout>
2,在代码中inflate布局
ViewStub myViewStub = (ViewStub)findViewById(R.id.myViewStub);
if (myViewStub != null) {
myViewStub.inflate();
//或者是下面的形式加载
//myViewStub.setVisibility(View.VISIBLE);
}
-
除了
inflate
方法外,我们还可以调用setVisibility()
方法加载布局文件 - 一旦加载布局完成后,ViewStub会从当前布局层级中删除
-
android:id
指定ViewStub ID,用于查找ViewStub进行延迟加载 -
android:layout
延迟加载布局的资源id -
android:inflatedId
加载的布局被重写的id,这里为RelativeLayout的id。
<merge>
标签.