java.lang.Object | ||
↳ | android.view.View | |
↳ | android.view.ViewStub |
<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變爲可見或者獲取焦點的時候使用他 |
構造函數html
ViewStub(Context context, int layoutResource)java
建立一個與指定的佈局資源文件關聯的ViewStub對象。android
參數web
layoutResource 要加載的佈局資源文件的id值。canvas
公共方法api
public void draw (Canvas canvas)函數
手動在指定的畫布繪製這個視圖(及全部其子視圖)。這個視圖必須在調用這個函數以前作好了總體佈局。當要本身實現一個視圖時,不要重載這個方法;相反,你應該重載onDraw(Canvas)方法。(譯者注:主要用於自定義的視圖組件的方法。)佈局
參數字體
canvas 這個畫布傳到那個已渲染的視圖對象。spa
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()
受保護方法
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。