public final class

ViewStub

extends View
java.lang.Object
android.view.View
android.view.ViewStub
ViewStub是一个可隐藏的,不占用内存空间的试图对象,他可以在运行时延迟加载布局资源文件。当ViwStub设置为可见,或者调用inflate()方法时,才会加载这个布局资源文件。在加载试图时在父容器中替换它自己,,所以viewStub是一直都存在于试图中的,当调用setVisibility(int a )或者inflate()为止,也可以通过使用inflateid属性来定义或重命名要加载的试图对象id:
<ViewStub android:id="@+id/stub"    android:inflatedId="@+id/subTree"    android:layout="@layout/mySubTree"    android:layout_width="120dip"    android:layout_height="40dip" />

 ViewStub stub = (ViewStub) findViewById(R.id.stub);     View inflated = stub.inflate();

当inflate()被调用,这个viewStub被加载的试图替代并返回这个试图对象。这使得程序不需要再次执行findviewbyid()来获取试图引用。
interface ViewStub.OnInflateListener 用于接收viewstub已经成功加载布局资源文件的通知的监听器
XML Attributes
Attribute Name Related Method Description
android:inflatedId setInflatedId(int) 覆盖加载试图的id
android:layout setLayoutResource(int) 为加载的字体试图提供一个标示,在viewstub变为可见或者获取焦点的时候使用他

构造函数

ViewStub(Context context, int layoutResource)

创建一个与指定的布局资源文件关联的ViewStub对象。

参数

layoutResource 要加载的布局资源文件的id值。

公共方法

public void draw (Canvas canvas)

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

参数

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

public int getInflatedId ()

返回加载的布局资源文件的ID,如果加载的布局资源文件的idNO_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。如果这个idNO_ID,这个加载视图保持它原来的id不变。

相关XML 属性

android:inflatedId

参数

inflatedId 一个正整数来标识这个加载视图或者NO_ID将保持加载视图原来的id

参见

getInflatedId()

public void setLayoutResource (int layoutResource)

设置待加载的布局资源文件,当ViewStub被设置为visibleinvisible或调用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)

当可见性设置为VISIBLEINVISIBLEinflate()将被调用,并且加载视图资源在父容器中替换ViewStub

参数

visibility 设置为VISIBLE(显示), INVISIBLE(隐藏), GONE(完全隐藏,不暂用布局位置).

参见

inflate()

受保护方法

protected void dispatchDraw (Canvas canvas)

调用这个函数去绘制这个控件的子视图。可以通过派生类重写在绘制子类之前获取控制(但是是在他自己的视图已经被绘制完之后)

参数

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

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

测量这个视图以确定其内容的高度和宽度。通过measure(int, int)来调用这个方法,并且应该由子类重写以提高内容测量的效率和精确度。

约定:当该方法被重写时,你必须调用setMeasuredDimension(int, int)来存储已测量视图的高度和宽度。否则将通过measure(int, int)抛出一个IllegalStateException异常。调用父类的onMeasure(int, int)方法是一个有效的办法。

父类的实现是以背景大小为默认大小,除非MeasureSpec(测量细则)允许更大的背景。 为了更好测量内容子类应该重写onMeasure(int, int)

如果这个方法被重写,子类有责任确保测量它的高度和宽度至少是视图的最小宽度和高度(getSuggestedMinimumHeight()getSuggestedMinimumWidth())。

参数

widthMeasureSpec 由于父类有横向空间要求,参见View.MeasureSpec

heightMeasureSpec 由于父类有纵向空间要求,参见View.MeasureSpec



更多相关文章

  1. 图片加载框架简单介绍 ImageLoader 的基本使用
  2. Android自定义Toast弹出消息提示
  3. Android常用控件之RatingBar的使用
  4. Android监听软键盘的显示和隐藏
  5. Android好轮子-封装很好的库
  6. Android进阶之路 - 软键盘顶起解决方案
  7. Android学习之RecyclerView
  8. Android(安卓)首页轮播图实现
  9. android 高效显示Bitmap - 开发文档翻译

随机推荐

  1. Android 学习笔记8---SAX和DOM解析XML文
  2. Android Studio开发环境搭建手记
  3. Android 4.4(KitKat)中VSync信号的虚拟化
  4. android TabHost(选项卡)的使用方法
  5. Android(安卓)8.1 从零开始写 HAL -- (3)
  6. Android ZBar bar code reader二维码
  7. 搭建Android开发环境写第一个Hello World
  8. Unable to instantiate activity Compone
  9. Android终端命令执行编译命令()
  10. Android开发学习笔记(十三) ProgressDialog