Android之Inflate 方法用途

2021-08-31 22:52:36 字數 1706 閱讀 1410

原文:

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裡...