inflate()作用就是將xml定義的乙個布局找出來,但僅僅是找出來而且隱藏的,沒有找到的同時並顯示功能。最近做的乙個專案就是這一點讓我迷茫了好幾天。
android上還有乙個與inflate()類似功能的方法叫findviewbyid(),二者有時均可使用,但也有區別
區別在於:
如果你的activity裡用到別的layout,比如對話方塊layout,你還要設定這個layout上的其他元件的內容,你就必須用inflate()方法先將對話方塊的layout找出來,然後再用findviewbyid()找到它上面的其它元件。例如:
[html]view plain
copy
view
view1
=view
.inflate(this,r.layout.dialog_layout,null);
textviewdialogtv
=(textview)view1.findviewbyid(r.id.dialog_tv);
dialogtv.settext("abcd");
注:r.id.dialog_tv是在對話方塊layout上的元件,而這時若直接用
this.findviewbyid(r.id.dialog_tv)肯定會報錯。
[html]view plain
copy
view
viewstub
= ((viewstub) findviewbyid(r.id.stubview)).inflate();
inflate()或可理解為「隱性膨脹」,隱性擺放在view裡,inflate()前只是獲得控制項,但沒有大小沒有在view裡佔據空間,inflate()後有一定大小,只是出於隱藏狀態
1.findviewbyid()是view物件的方法,先通過inflate()方法得到view,呼叫這個view物件的getviewbyid()方法,就能得到這個view樹上的子view。
2.inflate()函式可以通過getsystemservice()方法得到,引數是layout_inflater_service。
3.inflate()函式的第乙個引數是布局檔案的r引用,第二個引數是根
viewgroup,也就是從哪個viewgroup節點開始渲染。對於第二個引數,需要例項化這個viewgroup,可以這麼做,在xml布局檔案中設定這個root的id,然後用findviewbyid()方法通過id就能得到它,比如
view layout = inflater.inflate(r.layout.toast_layout,(viewgroup) findviewbyid(r.id.toast_layout_root));
關於inflate 方法
1.inflate方法的主要作用就是將xml轉換成乙個view物件,用於動態的建立布局。2.它有四種過載形式,但最終都只會呼叫下面的第四種。1.public view inflate int resource,viewgroup root 2.public view inflate int reso...
inflate中的引數
public view inflate int resource,viewgroup root,boolean attachtoroot resource 需要載入的layout的xml資源 root 表示獲得容器檢視物件後,要將獲得的該物件新增到哪個容器檢視物件中,如果不想將要獲得的物件新增到任何...
inflate方法與findViewById的區別
layoutinflater作用是將layout的xml布局檔案例項化為view類物件。對於乙個沒有被載入或者想要動態載入的介面,都需要使用layoutinflater.inflate 來找 res layout下的 xml 布局檔案,並且例項化為view類物件 獲取layoutinflater的方...