public final class ViewStub extends View
数一同被添加到 ViewStub 父容器。
同样,你也可以通过使用 inflatedId 属性来定义或重命名要加载的视图对象的 Id 值。
例如:
<ViewStub android:id="@+id/stub" android:layout_width="100dp" android:layout_height="100dp" android:inflatedId="@+id/subTree" android:layout="@layout/mySubTree" />
通过"stud"id 可以找到被定义的 ViewStub 对象。加载布局资源文件"mySubTree "后,ViewStub 对象从其父容器中移除。可以通过 id"subTree"找到由布局资源"mySubTree"创建的View。这个视图对象最后被指定为宽 100dip,高 100dip。执行加载布局资源文件的推荐方式
如下:ViewStub stub = findViewById(R.id.stub); View inflated = stub.inflate();
当 inflate()被调用, 这个 ViewStub 被加载的视图替代并且返回这个视图对象。这使得应用程序不需要额外执行 findViewById()来获取加载视图的引用。
这个类大概意思是用 ViewStub 类和在 XML 文件里面指定的布局资源文件关联起来,让布局资源文件在需要使用的时候再加载上去。主要作用是性能优化,什么时候用什么时候加载,不用在开始启动的时候一次加载,既可以加快程序的启动速度,又可以节省内存资源
一个用于接收 ViewStub 已经成功加载布局资源文件的通知的监听器。
属性名称 | 相关方法 | 描述 |
---|---|---|
android:inflatedId | setInflatedId(int) | 覆盖待加载视图的 id 值。 |
android:layout | setLayoutResource(int) | 要引用的布局资源文件 id |
创建一个与指定的布局资源文件关联的 ViewStub 对象。
参数layoutResource 要加载的布局资源文件的 id 值。
参数canvas 这个画布传到那个已渲染的视图对象。
手动在指定的画布绘制这个视图(及所有其子视图)。这个视图必须在调用这个函数之前做好了整体布局。
当要自己实现一个视图时,不要重载这个方法;相反,你应该重载onDraw(Canvas)方法。
主要用于自定义的视图组件的方法
相关 XML 属性:android:inflatedId
返回值:一个正整数来标识这个要加载的视图或者 NO_ID 将保持加载视图原来的 id。
参见setInflatedId(int)
相关 XML 属性:android:layout
返回值:加载到视图对象的布局资源文件 id 值。
参见
返回值:这个已加载的布局资源文件.
参数inflatedId: 一个正整数来标识这个加载视图或者 NO_ID 将保持加载视图原来的 id。
相关 XML 属性:android:inflatedId
参见getInflatedId()
参数layoutResource: 一个有效的布局资源文件 id 值(不等于 0)。
相关 XML 属性:android:layout
参见
设置成功加载布局资源文件后事件通知的监听器。
参见ViewStub.OnInflateListener
参数visibility 设置为 VISIBLE(显示), INVISIBLE(隐藏), 或 GONE(完全隐藏,不暂用布局位置)
替换 ViewStub。
参见inflate()
调用这个函数去绘制这个控件的子视图。可以通过派生类重写在绘制子类之前获取控制(但是是在他自己的视图已经被绘制完之后)
参数canvas 这个画布传到那个已渲染的视图对象。
参数
约定:当该方法被重写时,你必须调用 setMeasuredDimension(int, int)来存储已测量视图的高度和宽度。否则将通过 measure(int, int)抛出一个 IllegalStateException 异常
调用父类的 onMeasure(int, int)方法是一个有效的办法。父类的实现是以背景大小为默认大小,除非 MeasureSpec(测量细则)允许更大的背景。 为了更好测量内容子类应该重写 onMeasure(int, int)。
如果这个方法被重写,子类有责任确保测量它的高度和宽度至少是视图的最小宽度和高度(getSuggestedMinimumHeight()和 getSuggestedMinimumWidth())。