標(biāo)簽的使用

Android UI 開(kāi)發(fā)中常用的標(biāo)簽和控件includemerge市咆、 ViewStub汗捡,最終目的便是為了避免過(guò)深的布局層級(jí)虽抄。

Deep layouts - Layouts with too much nesting are bad for performance. The default maximum depth is 10.


<include/>

include標(biāo)簽是為了解決重復(fù)定義相同布局的問(wèn)題澈驼,在產(chǎn)品設(shè)計(jì)中常出現(xiàn)應(yīng)用多個(gè)界面中一個(gè)模塊需要呈現(xiàn)相同的布局樣式辛燥,對(duì)我來(lái)說(shuō),這就是一個(gè)可重用的布局組件缝其,可以將其使用單獨(dú)的layout抽離购桑,通過(guò)include標(biāo)簽將其添加到對(duì)應(yīng)的布局中。

<merge/>

The <merge /> tag helps eliminate redundant view groups in your view hierarchy when including one layout within another. For example, if your main layout is a vertical LinearLayout in which two consecutive views can be re-used in multiple layouts, then the re-usable layout in which you place the two views requires its own root view. However, using another LinearLayout as the root for the re-usable layout would result in a vertical LinearLayout inside a vertical LinearLayout. The nested LinearLayout serves no real purpose other than to slow down your UI performance.

<merge/>標(biāo)簽可減少include引入重用布局時(shí)的層級(jí)冗余問(wèn)題氏淑。
比如一個(gè)垂直的線性布局,并且復(fù)用的布局也是一個(gè)類似的垂直線性布局硕噩。那么假残,使用<include/>引入重用布局時(shí)會(huì)出現(xiàn)一個(gè) LinearLayout 作為另一個(gè) LinearLayout 的根節(jié)點(diǎn),這相當(dāng)于真?zhèn)€Layout的層級(jí)結(jié)構(gòu)多了一層且沒(méi)有任何意義。此時(shí)可以使用<merge>標(biāo)簽來(lái)替代可重用 Layout的根節(jié)點(diǎn)辉懒。

ViewStub

ViewStub的官方描述是:
ViewStub is a lightweight view with no dimension and doesn’t draw anything or participate in the layout. As such, it's cheap to inflate and cheap to leave in a view hierarchy. Each ViewStub simply needs to include the android:layout attribute to specify the layout to inflate.
ViewStub是一個(gè)不可視且大小為0的視圖阳惹,可以延遲到運(yùn)行時(shí)填充布局資源。當(dāng)ViewStub設(shè)置為visible或調(diào)用inflate()之后眶俩,就會(huì)填充布局資源莹汤,ViewStub便會(huì)被填充的視圖替代。

總結(jié)下來(lái)它具有以下幾個(gè)特性:

  • 需主動(dòng)設(shè)置visible或調(diào)用inflate()才會(huì)填充到父布局颠印,要被加載的子布局通過(guò)android:layout屬性來(lái)設(shè)置纲岭。
  • 未主動(dòng)設(shè)置時(shí)其默認(rèn)不可見(jiàn),不會(huì)繪制且不占用布局(此時(shí)的不可見(jiàn)與常用的View.setVisibility(View.GONE)有本質(zhì)區(qū)別线罕,它不會(huì)顯示在當(dāng)前布局的整個(gè)層級(jí)結(jié)構(gòu)中)
  • 顯示后ViewStub元素不再是View視圖的一部分止潮。它被引用的資源替換掉,根布局的ID即為ViewStub屬性中android:inflatedId指定的ID钞楼。
  • ViewStub只能Inflate一次喇闸,之后ViewStub對(duì)象會(huì)被置為空。按句話說(shuō)询件,某個(gè)被ViewStub指定的布局被Inflate后燃乍,就不能夠再通過(guò)ViewStub來(lái)控制它了。所以它不適用于需要按需顯示隱藏的情況宛琅。
  • ViewStub只能用來(lái)Inflate一個(gè)布局文件刻蟹,而不是某個(gè)具體的View,當(dāng)然也可以把View寫在某個(gè)布局文件中夯秃。如果想操作一個(gè)具體的view座咆,還是使用visibility屬性。
  • VIewStub中不能嵌套merge標(biāo)簽仓洼。

結(jié)語(yǔ)

以上代碼實(shí)現(xiàn)十分基礎(chǔ)介陶,之所以做這個(gè)總結(jié)是因?yàn)樗鼈兪俏以趯?shí)際開(kāi)發(fā)中經(jīng)常使用的,然后通過(guò)自己的理解和[Hierarchy Viewer]層級(jí)圖更直觀的解釋為什么需要這么使用它們色建。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哺呜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子箕戳,更是在濱河造成了極大的恐慌某残,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陵吸,死亡現(xiàn)場(chǎng)離奇詭異玻墅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)壮虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門澳厢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)环础,“玉大人,你說(shuō)我怎么就攤上這事剩拢∠叩茫” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵徐伐,是天一觀的道長(zhǎng)贯钩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)办素,這世上最難降的妖魔是什么角雷? 我笑而不...
    開(kāi)封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮摸屠,結(jié)果婚禮上谓罗,老公的妹妹穿的比我還像新娘。我一直安慰自己季二,他們只是感情好檩咱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著胯舷,像睡著了一般刻蚯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桑嘶,一...
    開(kāi)封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天炊汹,我揣著相機(jī)與錄音,去河邊找鬼逃顶。 笑死讨便,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的以政。 我是一名探鬼主播霸褒,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盈蛮!你這毒婦竟也來(lái)了废菱?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抖誉,失蹤者是張志新(化名)和其女友劉穎殊轴,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袒炉,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旁理,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了我磁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片韧拒。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淹接,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叛溢,到底是詐尸還是另有隱情,我是刑警寧澤劲适,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布楷掉,位于F島的核電站,受9級(jí)特大地震影響霞势,放射性物質(zhì)發(fā)生泄漏烹植。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一愕贡、第九天 我趴在偏房一處隱蔽的房頂上張望草雕。 院中可真熱鬧,春花似錦固以、人聲如沸墩虹。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)诫钓。三九已至,卻和暖如春篙螟,著一層夾襖步出監(jiān)牢的瞬間菌湃,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工遍略, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惧所,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓绪杏,卻偏偏與公主長(zhǎng)得像下愈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寞忿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容