Android中使用include標(biāo)簽和merge標(biāo)簽重復(fù)使用布局
盡管Android提供了各種組件來(lái)實(shí)現(xiàn)小而可復(fù)用的交互元素,你也可能因?yàn)椴季中枰獜?fù)用一個(gè)大組件。為了高效復(fù)用完整布局,你可以使用<include/>和<merge/>標(biāo)簽嵌入另一個(gè)布局到當(dāng)前布局。所以當(dāng)你通過(guò)寫(xiě)一個(gè)自定義視圖創(chuàng)建獨(dú)立UI組件,你可以放到一個(gè)布局文件里,這樣更容易復(fù)用。
復(fù)用布局因?yàn)槠湓试S你創(chuàng)建可復(fù)用的復(fù)雜布局而顯得非常強(qiáng)大。如,一個(gè) 是/否 按鈕面板,或帶描述文本的自定義進(jìn)度條。這同樣意味著,應(yīng)用里多個(gè)布局里共同的元素可以被提取出來(lái),獨(dú)立管理,然后插入到每個(gè)布局里。
創(chuàng)建可復(fù)用布局
如果你已經(jīng)知道哪個(gè)布局需要重用,就創(chuàng)建一個(gè)新的xml文件來(lái)定義布局。如,下面是一個(gè)來(lái)自G-Kenya代碼庫(kù)里定義標(biāo)題欄的布局,它可以被插到每個(gè)Activity里:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=”match_parent”
android:layout_height="wrap_content"
android:background="@color/titlebar_bg">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gafricalogo" />
</FrameLayout>
根視圖應(yīng)該剛好和你在其他要插入這個(gè)視圖的視圖里相應(yīng)位置一樣。
使用<include/>標(biāo)簽
在你要添加可復(fù)用布局的布局里,添加<include/>標(biāo)簽。下面是添加標(biāo)題欄:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:background="@color/app_bg"
android:gravity="center_horizontal">
<include layout="@layout/titlebar"/>
<TextView android:layout_width=”match_parent”
android:layout_height="wrap_content"
android:text="@string/hello"
android:padding="10dp" />
...
</LinearLayout>
你同樣可以覆蓋所有的布局參數(shù)(android:layout_*屬性)
<include android:id=”@+id/news_title”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
layout=”@layout/title”/>
可是,如果你要用include標(biāo)簽覆蓋布局屬性,為了讓其他屬性生效,就必須覆蓋android:layout_height和android:layout_width。
使用<merge/>標(biāo)簽
<merge/>標(biāo)簽幫助你排除把一個(gè)布局插入到另一個(gè)布局時(shí)產(chǎn)生的多余的View Group.如,你的被復(fù)用布局是一個(gè)垂直的線性布局,包含兩個(gè)子視圖,當(dāng)它作為一個(gè)被復(fù)用的元素被插入到另一個(gè)垂直的線性布局時(shí),結(jié)果就是一個(gè)垂直的LinearLayout里包含一個(gè)垂直的LinearLayout。這個(gè)嵌套的布局并沒(méi)有實(shí)際意義,而且會(huì)讓UI性能變差。
為了避免插入類(lèi)似冗余的View Group,你可以使用<merge/>標(biāo)簽標(biāo)簽作為可復(fù)用布局的根節(jié)點(diǎn),如:
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/delete"/>
</merge>
現(xiàn)在,當(dāng)你使用include標(biāo)簽插入這個(gè)布局到另一個(gè)布局時(shí),系統(tǒng)會(huì)忽略merge標(biāo)簽,直接把兩個(gè)Button替換到include標(biāo)簽的位置。
- Android抽象布局——include、merge 、ViewStub詳解
- Android編程之include文件的使用方法
- android使用include調(diào)用內(nèi)部組件的方法
- 解析android中include標(biāo)簽的使用
- Android開(kāi)發(fā)之merge結(jié)合include優(yōu)化布局
- Android開(kāi)發(fā)技巧之ViewStub控件惰性裝載
- 深入分析Android ViewStub的應(yīng)用詳解
- Android組件ViewStub基本使用方法詳解
- Android布局技巧之include、merge與ViewStub標(biāo)簽的巧用
相關(guān)文章
Android實(shí)現(xiàn)使用流媒體播放遠(yuǎn)程mp3文件的方法
這篇文章主要介紹了Android實(shí)現(xiàn)使用流媒體播放遠(yuǎn)程mp3文件的方法,結(jié)合實(shí)例形式分析了Android遠(yuǎn)程播放音頻文件的相關(guān)步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-08-08
android根據(jù)分辨率自動(dòng)調(diào)整字體大小的實(shí)例代碼
android根據(jù)分辨率自動(dòng)調(diào)整字體大小的實(shí)例代碼,需要的朋友可以參考一下2013-06-06
Android RecyclerView布局就這么簡(jiǎn)單
Android RecyclerView布局就這么簡(jiǎn)單!RecyclerView比ListView更靈活,更強(qiáng)大,作為一個(gè)android開(kāi)發(fā)者如果還不知道如何使用android5.X的RecyclerView未免有點(diǎn)說(shuō)不過(guò)去了,本文就為大家講解Android RecyclerView布局,需要的朋友可以參考下2016-04-04
Android 使用Vitamio打造自己的萬(wàn)能播放器(8)——細(xì)節(jié)優(yōu)化
本文主要介紹Android Vitamio開(kāi)發(fā)播放器,這里給大家提供了一些小的細(xì)節(jié)優(yōu)化,更加完善播放器的功能,希望能幫助有需要的小伙伴2016-07-07
Android實(shí)現(xiàn)加載時(shí)提示“正在加載,請(qǐng)稍后”的方法
在現(xiàn)在的很多應(yīng)用中,當(dāng)在加載的時(shí)候,如果頁(yè)面動(dòng)態(tài)數(shù)據(jù)較多,會(huì)有很長(zhǎng)一段時(shí)間的空白頁(yè)面,如果加上這個(gè)頁(yè)面正在加載的提示,使得應(yīng)用更加人性化。這篇文章就給大家分享了在 Android實(shí)現(xiàn)加載時(shí)提示“正在加載,請(qǐng)稍后”的方法,有需要的朋友們可以參考借鑒。2016-10-10
Android IPC機(jī)制綁定Service實(shí)現(xiàn)本地通信
本文主要介紹Android IPC機(jī)制綁定Service 實(shí)現(xiàn)本地通信,通過(guò)圖解,代碼等方式給大家解釋Android IPC機(jī)制,需要參考的同學(xué)可以看一下2016-07-07
Android中隱藏狀態(tài)欄和標(biāo)題欄的方法匯總(隱藏狀態(tài)欄、標(biāo)題欄的五種方法)
這篇文章主要介紹了Android中隱藏狀態(tài)欄和標(biāo)題欄的方法匯總(隱藏狀態(tài)欄、標(biāo)題欄的五種方法),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
Android HelloChart開(kāi)源庫(kù)圖表之折線圖的實(shí)例代碼
這篇文章主要介紹了Android HelloChart開(kāi)源庫(kù)圖表之折線圖的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Android HttpURLConnection斷點(diǎn)下載(單線程)
這篇文章主要為大家詳細(xì)介紹了Android HttpURLConnection斷點(diǎn)下載的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05

