在實際開發中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對於上面**,指定了第二個引數 viewgroup root,當然你也可以設定為 null 值。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);
注意:
·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...