direktori cari
android Manifest Manifest.permission Manifest.permission_group android.accessibilityservice AccessibilityService android.accounts Account android.app NotificationManager android.bluetooth BluetoothAdapter BluetoothClass BluetoothClass.Device BluetoothClass.Device.Major BluetoothClass.Service BluetoothDevice BluetoothServerSocket BluetoothSocket android.content SharedPreferences android.database.sqlite SQLiteCursorDriver SQLiteOpenHelper android.graphics Bitmap android.location LocationListener Geocoder GpsStatus GpsStatus.Listener GpsStatus.NmeaListener GpsSatellite android.media AudioFormat AsyncPlayer AudioRecord AudioRecord.OnRecordPositionUpdateListener ThumbnailUtils AudioManager android.net TrafficStats MailTo LocalSocket android.os AsyncTask AsyncTask.Status CountDownTimer Message MessageQueue HandlerThread android.text Html android.util JsonWriter android.view ContextMenu ContextMenu.ContextMenuInfo Display ViewManager View ViewStub ViewTreeObserver ViewParent WindowManager GestureDetector Gravity MenuInflater ScaleGestureDetector SoundEffectConstants android.view.inputmethod InputConnection InputMethod InputMethodSession BaseInputConnection InputMethodManager android.widget AbsListView AbsListView.LayoutParams AbsListView.OnScrollListener AbsListView.RecyclerListener AbsoluteLayout AbsoluteLayout.LayoutParams AbsSeekBar AbsSpinner AdapterView AdapterView.AdapterContextMenuInfo AdapterView.OnItemLongClickListener AdapterView.OnItemSelectedListener AdapterView.OnItemClickListener AnalogClock BaseAdapter BaseExpandableListAdapter Button CheckBox CheckedTextView Checkable Chronometer Chronometer.OnChronometerTickListener CompoundButton CompoundButton.OnCheckedChangeListener CursorAdapter CursorTreeAdapter DatePicker DatePicker.OnDateChangedListener DialerFilter DigitalClock EditText Filter Filter.FilterListener Filter.FilterResults ExpandableListAdapter ExpandableListView.OnChildClickListener ExpandableListView.OnGroupClickListener ExpandableListView.OnGroupCollapseListener ExpandableListView.OnGroupExpandListener Filterable Gallery Gallery.LayoutParams GridView GridLayout GridLayout.Alignment RadioGroup ImageView ImageView.ScaleType HorizontalScrollView ImageButton ImageSwitcher FilterQueryProvider ListAdapter ListView MediaController MultiAutoCompleteTextView MultiAutoCompleteTextView.CommaTokenizer MultiAutoCompleteTextView.Tokenizer QuickContactBadge RadioButton RatingBar RatingBar.OnRatingBarChangeListener RelativeLayout RemoteViews ResourceCursorAdapter ResourceCursorTreeAdapter Scroller ScrollView SearchView SearchView.OnCloseListener SearchView.OnQueryTextListener SearchView.OnSuggestionListener SeekBar SeekBar.OnSeekBarChangeListener SimpleAdapter SimpleAdapter.ViewBinder SimpleCursorAdapter SimpleCursorAdapter.CursorToStringConverter SimpleCursorAdapter.ViewBinder SimpleCursorTreeAdapter SimpleCursorTreeAdapter.ViewBinder SimpleExpandableListAdapter SlidingDrawer SlidingDrawer.OnDrawerCloseListener SlidingDrawer.OnDrawerOpenListener SlidingDrawer.OnDrawerScrollListener Spinner SpinnerAdapter WrapperListAdapter TabHost TabHost.TabSpec TextView TimePicker TimePicker.OnTimeChangedListener Toast TableLayout TableLayout.LayoutParams TableRow TableRow.LayoutParams TabWidget TextSwitcher ToggleButton TwoLineListItem VideoView ViewAnimator ViewFlipper ViewSwitcher ViewSwitcher.ViewFactory ZoomButtonsController ZoomButtonsController.OnZoomListener ZoomButton ZoomControls dalvik.system DexFile
watak

ViewStub

版本:Android 2.2 r1

 

public final class ViewStub extends View

 

java.lang.Object

android.view.View

       android.view.ViewStub

 

类摘要:

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类和在XML文件里面指定的布局资源文件关联起来,让布局资源文件在需要使用的时候再加载上去。主要作用是性能优化,什么时候用什么时候加载,不用在开始启动的时候一次加载,既可以加快程序的启动速度,又可以节省内存资源。)

 

嵌套类

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

 

XML属性

属性名称

相关方法

描述

android:inflatedId

setInflatedId(int)

覆盖待加载视图的id值。

android:layout

setLayoutResource(int)

为待加载的资源视图提供一个标识,在ViewStub变为可见或获取焦点时使用它。(译者注:要引用的布局资源文件id

 

构造函数

         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


Artikel sebelumnya: Artikel seterusnya: