安卓 LayoutInflater詳解

2022-07-29 16:54:14 字數 3821 閱讀 2874

安卓 layoutinflater詳解

body

body>*:first-child

body>*:last-child

p, blockquote, ul, ol, dl, table, pre

h1, h2, h3, h4, h5, h6

h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code

h1 h2

h3 h4

h5 h6

body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6

h1+p, h2+p, h3+p, h4+p, h5+p, h6+p

a a:hover

ul, ol

ul li>:first-child, ol li>:first-child, ul li ul:first-of-type, ol li ol:first-of-type, ul li ol:first-of-type, ol li ul:first-of-type

ul ul, ul ol, ol ol, ol ul

dl dl dt

dl dt:first-child

dl dt>:first-child

dl dt>:last-child

dl dd

dl dd>:first-child

dl dd>:last-child

pre, code, tt

code, tt

pre>code

pre

pre code, pre tt

kbd

blockquote

blockquote>:first-child

blockquote>:last-child

hr table th

table th, table td

table tr

table tr:nth-child(2n)

img

在實際開發中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 例項的三種方式

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

layoutinflater inflater = layoutinflater.from(context);

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

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

另外getsystemservice()是android很重要的乙個api,它是activity的乙個方法,根據傳入的name來取得對應的object,然後轉換成相應的服務物件。以下介紹系統相應的服務。

傳入的name 返回的物件 說明

window_service windowmanager 管理開啟的視窗程式

layout_inflater_service layoutinflater 取得xml裡定義的view

activity_service activitymanager 管理應用程式的系統狀態

power_service powermanger 電源的服務

alarm_service alarmmanager 鬧鐘的服務

notification_service notificationmanager 狀態列的服務

keyguard_service keyguardmanager 鍵盤鎖的服務

location_service locationmanager 位置的服務,如gps

search_service searchmanager 搜尋的服務

vebrator_service vebrator 手機震動的服務

connectivity_service connectivity 網路連線的服務

wifi_service wifimanager wi-fi服務

telephony_service teleponymanager **服務

inflate 方法

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

public view inflate (int resource, viewgroup root)

public view inflate (xmlpullparser parser, viewgroup root)

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

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

layoutinflater inflater = (layoutinflater)getsystemservice(layout_inflater_service);

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

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

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

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

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

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

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

安卓機頂盒軟體安卓

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

安卓app公升級之安卓app簽名

2.使用者自定義的方式簽名 簽名是安卓的公升級的必須要求 載掉舊版本才能安裝新版本,即讓使用者把舊版本卸在裝新的,這樣使用者體驗肯定就不好了。使用者自定義的方式簽名具體流程如下 1 滑鼠右鍵單機專案,選擇export,出如下視窗 之後就按步驟要求就可以匯出乙個已經通過自定義密匙簽名的安卓apk和密匙...

kindle安卓更新韌體 已經裝過安卓系統

具體步驟為 我的電腦 右鍵 屬性 高階 環境變數 在系統變數中找到path 不分大小寫 雙擊它 在其變數值 v 中新增 c windows system32 新增方法為 在原變數值後面加英文分號,接著分號後面貼上 c windows system32 就可以了,然後一路確定。電腦提示安裝驅動,則按照...