獲取自定義布局中的控制項

2022-05-18 04:04:53 字數 1837 閱讀 6182

獲得 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()方法,看一下該源**:

1. 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. public view inflate (int resource, viewgroup root)  

2. public view inflate (xmlpullparser parser, viewgroup root)  

3.   

4. public view inflate (xmlpullparser parser, viewgroup root, boolean attachtoroot)  

5.   

6. public view inflate (int resource, viewgroup root, boolean attachtoroot)  

示意**:

1. layoutinflater inflater = (layoutinflater)getsystemservice(layout_inflater_service);  

2.   

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

4.   

5. //edittext edittext = (edittext)findviewbyid(r.id.content);// error  

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

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

注意:·inflate 方法與 findviewbyid 方法不同;

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

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

自定義布局控制項

本文介紹一種自定義控制項的方法,由控制項布局和控制項 2部分組成。效果為乙個自定義標題欄,由乙個按鈕 乙個文字 乙個按鈕組成,並定義了各子件的事件。一 title布局如下 二 如下。重寫構造器,在其中展開布局,找到子控制項繫結事件 public class titlelayout extends l...

MFC怎麼獲取自定義控制項的ID號

如何獲取自定義控制項的id號 對話方塊dialog1上有幾個自定義控制項,這些控制項都是同乙個類的不同例項create 111 create 222 create 333 而成。每個控制項都響應滑鼠雙擊事件彈出對話方塊dialog2。請問在對話方塊dialog2中如何獲取被滑鼠雙擊的控制項的id號?...

FindResource 如何獲取自定義資源

來自 在.exe中可以這樣新增和訪問 1,新增資料 資源 在resource 資源 中 通過 add resource import.選擇需要新增的 資料 資源,其中的 resource type 可以自己命名,需要注意的是需要利用字串命名,譬如可以為 myrestype 資源id可以為字串,譬如為...