原文:
inflate()作用就是將xml定義的乙個布局找出來,但僅僅是找出來而且隱藏的,沒有找到的同時並顯示功能。最近做的乙個專案就是這一點讓我迷茫了好幾天。
android上還有乙個與inflate()類似功能的方法叫findviewbyid(),二者有時均可使用,但也有區別
區別在於:
如果你的activity裡用到別的layout,比如對話方塊layout,你還要設定這個layout上的其他元件的內容,你就必須用inflate()方法先將對話方塊的layout找出來,然後再用findviewbyid()找到它上面的其它元件。例如:
[code]
view view1=view.inflate(this,r.layout.dialog_layout,null);
textviewdialogtv=(textview)view1.findviewbyid(r.id.dialog_tv);
dialogtv.settext("abcd");
[/code]
注:r.id.dialog_tv是在對話方塊layout上的元件,而這時若直接用this.findviewbyid(r.id.dialog_tv)肯定會報錯。
[code]
view viewstub = ((viewstub) findviewbyid(r.id.stubview)).inflate();
[/code]
inflate()或可理解為「隱性膨脹」,隱性擺放在view裡,inflate()前只是獲得控制項,但沒有大小沒有在view裡佔據空間,inflate()後有一定大小,只是出於隱藏狀態
-----------------------
通俗的說,inflate就相當於將乙個xml中定義的布局找出來.
因為在乙個activity裡如果直接用findviewbyid()的話,對應的是setconentview()的那個layout裡的元件.
因此如果你的activity裡如果用到別的layout,比如對話方塊上的layout,你還要設定對話方塊上的layout裡的元件(像imageview,文字textview)上的內容,你就必須用inflate()先將對話方塊上的layout找出來,然後再用這個layout物件去找到它上面的元件,如:
view view=view.inflate(this,r.layout.dialog_layout,null);
textview dialogtv=(textview)view.findviewbyid(r.id.dialog_tv);
dialogtv.settext("abcd");
三種方式可以生成layoutinflater:
layoutinflater inflater=layoutinflater.from(this);
layoutinflater inflater=getlayoutinflater();
layoutinflater inflater=(layoutinflater)this.getsystemservice(layout_inflater_service);
然後呼叫inflate方法將xml布局檔案轉成view
publicviewinflate(intresource,viewgrouproot,booleanattachtoroot)
在view類中,也有inflate方法
publicstaticviewinflate(contextcontext,intresource,viewgrouproot)
Android之Inflate 方法用途
inflate 作用就是將xml定義的乙個布局找出來,但僅僅是找出來而且隱藏的,沒有找到的同時並顯示功能。最近做的乙個專案就是這一點讓我迷茫了好幾天。android上還有乙個與inflate 類似功能的方法叫findviewbyid 二者有時均可使用,但也有區別 區別在於 如果你的activity裡...
Android之Inflate 方法用途
inflate 作用就是將xml定義的乙個布局找出來,但僅僅是找出來而且隱藏的,沒有找到的同時並顯示功能。最近做的乙個專案就是這一點讓我迷茫了好幾天。android上還有乙個與inflate 類似功能的方法叫findviewbyid 二者有時均可使用,但也有區別 區別在於 如果你的activity裡...
Android之Inflate 方法用途
inflate 作用就是將xml定義的乙個布局找出來,但僅僅是找出來而且隱藏的,沒有找到的同時並顯示功能。最近做的乙個專案就是這一點讓我迷茫了好幾天。android上還有乙個與inflate 類似功能的方法叫findviewbyid 二者有時均可使用,但也有區別 區別在於 如果你的activity裡...