Android 浅谈ViewStub

来源:互联网 发布:smith college 知乎 编辑:程序博客网 时间:2024/05/03 12:46
ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewStub 可见,或者调用 inflate()函数时,才会加载这个布局资源文件。 该ViewStub 在加载视图时在父容器中替换它本身。因此,ViewStub 会一直存在于视图中,直到调用 setVisibility(int) 或者 inflate()为止。ViewStub 的布局参数会随着加载的视图数一同被添加到 ViewStub 父容器。同样,你也可以通过使用 inflatedId 属性来定义或重命名要加载的视图对象的 Id 值。

通过"stud"id 可以找到被定义的 ViewStub 对象。加载布局资源文件"mySubTree "后,ViewStub 对象从其父容器中移除。可以通过 id"subTree"找到由布局资源"mySubTree"创建的View。这个视图对象最后被指定为宽 120dip,高 40dip。执行加载布局资源文件的推荐方式

当inflate()被调用, 这个 ViewStub 被加载的视图替代并且返回这个视图对象。这使得应用程序不需要额外执行 findViewById()来获取加载视图的引用。

嵌套类

接口 ViewStub.OnInflateListener 一个用于接收 ViewStub 已经成功加载布局资源文件的通知的监听器。

公共方法

public void draw (Canvas canvas)

手动在指定的画布绘制这个视图(及所有其子视图)。这个视图必须在调用这个函数之前做好了整体布局。当要自己实现一个视图时,不要重载这个方法;相反,你应该重载onDraw(Canvas)方法。

参数
canvas 这个画布传到那个已渲染的视图对象。

public int getInflatedId ()

返回加载的布局资源文件的 ID,如果加载的布局资源文件的 id 是 NO_ID,那么这个加载的 View 将保留它原来的 id 值。

相关 XML属性android:inflatedId

返回值
一个正整数来标识这个要加载的视图或者 NO_ID 将保持加载视图原来的 id。
参见setInflatedId(int)

public int getLayoutResource ()

返回加载的布局资源文件的 id 值。
相关 XML属性

android:layout
返回值
加载到视图对象的布局资源文件 id 值。
参见

setLayoutResource(int)
setVisibility(int)
inflate()

public View inflate ()

加载 getLayoutResource()方法标识的布局资源,并通过加载布局资源替换父容器中它自己

返回值
这个已加载的布局资源文件.

public void setInflatedId (int inflatedId)

设置加载视图的 ID。如果这个 id 为 NO_ID,这个加载视图保持它原来的 id 不变。
相关 XML属性
android:inflatedId
参数
inflatedId 一个正整数来标识这个加载视图或者 NO_ID 将保持加载视图原来的id。
参见
getInflatedId()

public void setLayoutResource (int layoutResource)

设置待加载的布局资源文件,当 ViewStub 被设置为 visible 或 invisible 或调用 inflate()时使用。这个在加载布局资源文件时创建的视图用来在父容器中替换它自己。
相关 XML属性

android:layout
参数
layoutResource 一个有效的布局资源文件 id 值(不等于 0)。
参见
getLayoutResource()
setVisibility(int)
inflate()

public void setOnInflateListener (ViewStub.OnInflateListener inflateListener)
设置成功加载布局资源文件后事件通知的监听器。
参数
inflateListener 该 OnInflateListener 在成功加载后得到事件通知。
参见
ViewStub.OnInflateListener

public void setVisibility (int visibility)

当可见性设置为 VISIBLE 或 INVISIBLE,inflate()将被调用,并且加载视图资源在父容器中
替换 ViewStub。
参数
visibility 设置为 VISIBLE(显示), INVISIBLE(隐藏), 或 GONE(完全隐藏,不暂用布局位置).
参见
inflate()
受保护方法
原创粉丝点击