獲取LayoutInflater例項

2021-07-10 02:10:04 字數 2587 閱讀 1833

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

1、對於乙個沒有被載入或者想要動態載入的介面,都需要使用layoutinflater.inflate()來載入;

2、對於乙個已經載入的介面,就可以使用activiyt.findviewbyid()方法來獲得其中的介面元素。

layoutinflater 是乙個抽象類,在文件中如下宣告:

public 

abstract 

class

layoutinflater 

extends

object

獲得 layoutinflater 例項的三種方式:

1.layoutinflater inflater = getlayoutinflater();  //呼叫activity的getlayoutinflater()

2.layoutinflater localinflater =(layoutinflater)context.getsystemservice(context.layout_inflater_service);

3. layoutinflater inflater = layoutinflater.from(context);  

其實,這三種方式本質是相同的,從原始碼中可以看出:

getlayoutinflater():

activity 的 getlayoutinflater() 方法是呼叫 phonewindow 的getlayoutinflater()方法,看一下該源**:

public

phonewindow(context context)

可以看出它其實是呼叫 layoutinflater.from(context)。

layoutinflater.from(context):

public 

static

layoutinflater from(context context)   

return

layoutinflater;   }

可以看出它其實呼叫 context.getsystemservice()。

結論:所以這三種方式最終本質是都是呼叫的context.getsystemservice()。

inflate 方法

通過 sdk 的 api 文件,可以知道該方法有以下幾種過載形式,返回值均是 view 物件,如下:

1

2public view inflate (int

resource, viewgroup root);

3public

view inflate (xmlpullparser parser, viewgroup root);

4public view inflate (xmlpullparser parser, viewgroup root, boolean

attachtoroot);

5public view inflate (int resource, viewgroup root, boolean

attachtoroot);

67 layoutinflater inflater =(layoutinflater)getsystemservice(layout_inflater_service);

8 view view =inflater.inflate(r.layout.custom, (viewgroup)findviewbyid(r.id.test)); 9//

edittext edittext = (edittext)findviewbyid(r.id.content);

10//

error

edittext edittext = (edittext)view.findviewbyid(r.id.content);

對於上面**,指定了第二個引數 viewgroup root,當然你也可以設定為 null 值。

注意:

·inflate方法與 findviewbyid 方法不同;

·inflater 是用來找 res/layout下的 xml 布局檔案,並且例項化;

·findviewbyid() 是找具體 xml 布局檔案中的具體 widget 控制項(如:button、textview 等)。

我的話語:

inflater = layoutinflater.from(this);

view view = inflater.inflate(r.layout.local_activity_song, null);

lv_local_list_song = (listview) view.findviewbyid(r.id.lv_local_list_song);

此上**是當前activity新增除本布局之外的其它布局上空間的三段**。

layoutinflater.from(context);中填寫的this,含義就是當前activity。

獲取控制代碼獲取指標

1.獲取應用程式指標 2.獲取主框架指標 或者cmainframe pmainframe cmainframe afxgetmainwnd 3.獲取選單指標 cmenu pmenu afxgetmainwnd getmenu 4.獲取工具欄狀態列指標 1 主框架中可以直接使用m wnd m wnds...

獲取元素,獲取節點詳解

描述家庭族譜圖,只要我們獲得乙個元素,就可以通過很多的屬性或者方法找到頁面中的任何乙個元素 一 獲取元素的常用的8個方法 1 document.getelementbyid 1 id重複了,只獲取第乙個 2.ie6 7下不區分id大小寫 3.ie6 7下把表單元素name當作id使用 4.內嵌式引入...

tp5 1 獲取引數 獲取傳值 獲取url

方法都在 獲取引數方式一 class test 獲取引數方式二 構造方法注入 use think request class test 獲取引數方式三 構造方法注入 use think controller class test extends controller 獲取引數方式四 助手函式 use...