Most visited

Recently visited

Added in API level 1

ViewStub

public final class ViewStub
extends View

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewStub


ViewStub是一个不可见的,零大小的视图,可用于在运行时延迟布局资源。 当ViewStub变得可见时,或者当调用inflate()时,布局资源被充满。 然后,ViewStub用自己的父视图替换自己的视图或视图。 因此,ViewStub存在于视图层次结构中,直到调用setVisibility(int)inflate() 使用ViewStub的布局参数将虚拟View添加到ViewStub的父级。 同样,您可以使用ViewStub的inflatedId属性定义/覆盖充气View的id。 例如:

     <ViewStub android:id="@+id/stub"
               android:inflatedId="@+id/subTree"
               android:layout="@layout/mySubTree"
               android:layout_width="120dip"
               android:layout_height="40dip" />
 
The ViewStub thus defined can be found using the id "stub." After inflation of the layout resource "mySubTree," the ViewStub is removed from its parent. The View created by inflating the layout resource "mySubTree" can be found using the id "subTree," specified by the inflatedId property. The inflated View is finally assigned a width of 120dip and a height of 40dip. The preferred way to perform the inflation of the layout resource is the following:
     ViewStub stub = (ViewStub) findViewById(R.id.stub);
     View inflated = stub.inflate();
 
When inflate() is invoked, the ViewStub is replaced by the inflated View and the inflated View is returned. This lets applications get a reference to the inflated View without executing an extra findViewById().

Summary

Nested classes

interface ViewStub.OnInflateListener

Listener用于在ViewStub成功地扩充其布局资源后接收通知。

XML attributes

android:inflatedId Overrides the id of the inflated View with this value. 
android:layout Supply an identifier for the layout resource to inflate when the ViewStub becomes visible or when forced to do so. 

Inherited XML attributes

From class android.view.View

Inherited constants

From class android.view.View

Inherited fields

From class android.view.View

Public constructors

ViewStub(Context context)
ViewStub(Context context, int layoutResource)

用指定的布局资源创建一个新的ViewStub。

ViewStub(Context context, AttributeSet attrs)
ViewStub(Context context, AttributeSet attrs, int defStyleAttr)
ViewStub(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Public methods

void draw(Canvas canvas)

手动将此视图(及其所有子项)呈现给定的Canvas。

int getInflatedId()

返回充气视图所采用的id。

LayoutInflater getLayoutInflater()

获取当前 LayoutInflater使用的 inflate()

int getLayoutResource()

返回将由 setVisibility(int)inflate()用其父视图替换此StubbedView的布局资源。

View inflate()

膨胀由 getLayoutResource()标识的布局资源,并用膨胀的布局资源替换其父级中的此StubbedView。

void setInflatedId(int inflatedId)

定义充气视图所采用的id。

void setLayoutInflater(LayoutInflater inflater)

设置 LayoutInflater用于 inflate()null以使用默认值。

void setLayoutResource(int layoutResource)

指定当此StubbedView变为可见或不可见时或调用 inflate()时要膨胀的布局资源。

void setOnInflateListener(ViewStub.OnInflateListener inflateListener)

指定在此ViewStub成功扩充其布局资源后通知的充气侦听器。

void setVisibility(int visibility)

当可见性设置为 VISIBLEINVISIBLEinflate()被调用,此StubbedView由膨胀的布局资源替换在其父节点。

Protected methods

void dispatchDraw(Canvas canvas)

通过绘制来绘制子视图。

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。

Inherited methods

From class android.view.View
From class java.lang.Object
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource

XML attributes

android:inflatedId

用此值覆盖虚拟视图的ID。

必须是另一个资源的引用,其形式为“ @[+][package:]type:name ”,或者其形式为“一个主题属性 ?[package:][type:]name ”。

这对应于全局属性资源符号 inflatedId

相关方法:

android:layout

提供布局资源的标识符,以在ViewStub变得可见或强制执行时膨胀。 布局资源必须是布局的有效引用。

必须是另一个资源的引用,其形式为“ @[+][package:]type:name ”,或者其形式为“一个主题属性 ?[package:][type:]name ”。

这对应于全局属性资源符号 layout

相关方法:

Public constructors

ViewStub

Added in API level 1
ViewStub (Context context)

Parameters
context Context

ViewStub

Added in API level 1
ViewStub (Context context, 
                int layoutResource)

用指定的布局资源创建一个新的ViewStub。

Parameters
context Context: The application's environment.
layoutResource int: The reference to a layout resource that will be inflated.

ViewStub

Added in API level 1
ViewStub (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

ViewStub

Added in API level 1
ViewStub (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context
attrs AttributeSet
defStyleAttr int

ViewStub

Added in API level 21
ViewStub (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

Parameters
context Context
attrs AttributeSet
defStyleAttr int
defStyleRes int

Public methods

draw

Added in API level 1
void draw (Canvas canvas)

手动将此视图(及其所有子项)呈现给定的Canvas。 在调用这个函数之前,视图必须已经完成了一个完整的布局。 在实现视图时,实现onDraw(android.graphics.Canvas)而不是重写此方法。 如果您确实需要重写此方法,请调用超类版本。

Parameters
canvas Canvas: The Canvas to which the View is rendered.

getInflatedId

Added in API level 1
int getInflatedId ()

返回充气视图所采用的id。 如果充气ID是NO_ID ,充气视图会保留其原始ID。

相关XML属性:

Returns
int A positive integer used to identify the inflated view or NO_ID if the inflated view should keep its id.

也可以看看:

getLayoutInflater

Added in API level 16
LayoutInflater getLayoutInflater ()

获取 LayoutInflater使用的当前 inflate()

Returns
LayoutInflater

getLayoutResource

Added in API level 1
int getLayoutResource ()

返回将由 setVisibility(int)inflate()使用的布局资源,以用另一个视图替换其父级中的此StubbedView。

相关XML属性:

Returns
int The layout resource identifier used to inflate the new View.

也可以看看:

inflate

Added in API level 1
View inflate ()

膨胀由 getLayoutResource()标识的布局资源,并用膨胀的布局资源替换其父级中的此StubbedView。

Returns
View The inflated layout resource.

setInflatedId

Added in API level 1
void setInflatedId (int inflatedId)

定义充气视图所采用的id。 如果充气ID是NO_ID ,充气视图会保留其原始ID。

相关XML属性:

Parameters
inflatedId int: A positive integer used to identify the inflated view or NO_ID if the inflated view should keep its id.

也可以看看:

setLayoutInflater

Added in API level 16
void setLayoutInflater (LayoutInflater inflater)

设置 LayoutInflater用于 inflate()null以使用默认值。

Parameters
inflater LayoutInflater

setLayoutResource

Added in API level 1
void setLayoutResource (int layoutResource)

指定布局资源时,这StubbedView变得可见或不可见或者当膨胀inflate()被调用。 通过膨胀布局资源创建的视图用于替换其父级中的此StubbedView。

相关XML属性:

Parameters
layoutResource int: A valid layout resource identifier (different from 0.)

也可以看看:

setOnInflateListener

Added in API level 1
void setOnInflateListener (ViewStub.OnInflateListener inflateListener)

指定在此ViewStub成功扩充其布局资源后通知的充气侦听器。

Parameters
inflateListener ViewStub.OnInflateListener: The OnInflateListener to notify of successful inflation.

也可以看看:

setVisibility

Added in API level 1
void setVisibility (int visibility)

当可见性设置为VISIBLEINVISIBLEinflate()被调用,此StubbedView由膨胀的布局资源替换在其父节点。 之后,对这个函数的调用被传递给虚拟视图。

Parameters
visibility int: One of VISIBLE, INVISIBLE, or GONE.

也可以看看:

Protected methods

dispatchDraw

Added in API level 1
void dispatchDraw (Canvas canvas)

通过绘制来绘制子视图。 这可能会被派生类重写,以便在子对象被绘制之前获得控制权(但在绘制自己的视图之后)。

Parameters
canvas Canvas: the canvas on which to draw the view

onMeasure

Added in API level 1
void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。 此方法由measure(int, int)调用, measure(int, int)子类覆盖以提供其内容的准确和有效的度量。

合同:覆盖此方法时, 必须致电setMeasuredDimension(int, int)来存储此视图的测量宽度和高度。 不这样做会触发IllegalStateException ,由measure(int, int)抛出。 调用超类' onMeasure(int, int)是一个有效的用法。

Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)以提供更好的内容度量。

如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()getSuggestedMinimumWidth() )。

Parameters
widthMeasureSpec int: horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.

Hooray!