inflate獲取view 的幾種方法

2021-06-21 09:47:26 字數 956 閱讀 5367

通俗的說,inflate就相當於將乙個xml中定義的布局找出來.

因為在乙個activity裡如果直接用findviewbyid()的話,對應的是setconentview()的那個layout裡的元件.

因此如果你的activity裡如果用到別的layout,比如對話方塊上的layout,你還要設定對話方塊上的layout裡的元件(像imageview,文字textview)上的內容,你就必須用inflate()先將對話方塊上的layout找出來,然後再用這個layout物件去找到它上面的元件,如:

viewview=view.inflate(this,r.layout.dialog_layout,null);

textviewdialogtv=(textview)view.findviewbyid(r.id.dialog_tv);

dialogtv.settext("abcd");

如果元件r.id.dialog_tv是對話方塊上的元件,而你直接用this.findviewbyid(r.id.dialog_tv)肯定會報錯.

三種方式可以生成layoutinflater:

layoutinflaterinflater=layoutinflater.from(this);

layoutinflaterinflater=getlayoutinflater();

layoutinflaterinflater=(layoutinflater)this.getsystemservice(layout_inflater_service);

然後呼叫inflate方法將xml布局檔案轉成view

publicviewinflate(intresource,viewgrouproot,booleanattachtoroot)

在view類中,也有inflate方法

publicstaticviewinflate(contextcontext,intresource,viewgrouproot)

獲取當前View

在實際開發中layoutinflater這個類還是非常有用的,它的作用類似於findviewbyid 不同點是layoutinflater是用來找res layout 下的xml布局檔案,並且例項化 而findviewbyid 是找xml布局檔案下的具體widget控制項 如button textv...

動態獲取View的高度

設定動態復view的高度寬度有以下兩制種方法 1.getheight 方法這個方法必須要在view呼叫了onlayout方法後才能獲得,為了監聽onlayout方法,可以獲得viewtree觀察者上的 來實現,具體 為 viewtreeobserver viewtreeobserver bottom...

sql server 獲取上週幾和本週幾

sql server 獲取上週幾和本週幾 datefirst 每週以周幾開始,周一是 1 週日是 7 有些機器預設是7,有些機器預設是1 select datefirst 修改 datefirst 的值 set datefirst 7 查詢當前每週是以周幾開始,今天是一周的第幾天 select da...