a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android中使用include標簽和merge標簽重復使用布局

2020-04-11 11:49:14
字體:
來源:轉載
供稿:網友

盡管Android提供了各種組件來實現小而可復用的交互元素,你也可能因為布局需要復用一個大組件。為了高效復用完整布局,你可以使用<include/>和<merge/>標簽嵌入另一個布局到當前布局。所以當你通過寫一個自定義視圖創建獨立UI組件,你可以放到一個布局文件里,這樣更容易復用。

復用布局因為其允許你創建可復用的復雜布局而顯得非常強大。如,一個 是/否 按鈕面板,或帶描述文本的自定義進度條。這同樣意味著,應用里多個布局里共同的元素可以被提取出來,獨立管理,然后插入到每個布局里。

創建可復用布局

如果你已經知道哪個布局需要重用,就創建一個新的xml文件來定義布局。如,下面是一個來自G-Kenya代碼庫里定義標題欄的布局,它可以被插到每個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>

根視圖應該剛好和你在其他要插入這個視圖的視圖里相應位置一樣。

使用<include/>標簽

在你要添加可復用布局的布局里,添加<include/>標簽。下面是添加標題欄:

復制代碼 代碼如下:

<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>

你同樣可以覆蓋所有的布局參數(android:layout_*屬性)

復制代碼 代碼如下:

<include android:id=”@+id/news_title”
         android:layout_width=”match_parent”
         android:layout_height=”match_parent”
         layout=”@layout/title”/>

可是,如果你要用include標簽覆蓋布局屬性,為了讓其他屬性生效,就必須覆蓋android:layout_height和android:layout_width。

使用<merge/>標簽

<merge/>標簽幫助你排除把一個布局插入到另一個布局時產生的多余的View Group.如,你的被復用布局是一個垂直的線性布局,包含兩個子視圖,當它作為一個被復用的元素被插入到另一個垂直的線性布局時,結果就是一個垂直的LinearLayout里包含一個垂直的LinearLayout。這個嵌套的布局并沒有實際意義,而且會讓UI性能變差。

為了避免插入類似冗余的View Group,你可以使用<merge/>標簽標簽作為可復用布局的根節點,如:

復制代碼 代碼如下:

<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>

現在,當你使用include標簽插入這個布局到另一個布局時,系統會忽略merge標簽,直接把兩個Button替換到include標簽的位置。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曰本人一级毛片免费完整视频 | 成人在线免费视频观看 | 成人毛片久久 | 欧美成人手机在线视频 | 在线第一页 | 国产探花| 日韩中文字幕一区二区 | 欧美一区永久视频免费观看 | 国产高清免费视频 | 精品国产31久久久久久 | 欧美xxxxxx视频 | 伊人99| 久草免费在线视频 | 麻豆av在线播放 | 日批免费在线观看 | 午夜大片网 | 亚洲视频手机在线观看 | 越南一级毛片免费 | 热久久久 | 日韩免费一区二区 | 午夜激情福利电影 | 久久精品欧美 | 日本一区视频在线观看 | 亚洲v日韩v综合v精品v | 日韩中文字幕无码一区二区三区 | 久久国产精品免费视频 | av在线成人 | 色呦呦在线视频 | 国产精品久久 | 888av在线| 三级免费黄 | 久久91久久久久麻豆精品 | www.xxxx在线观看 | 久久色网 | 亚洲国产免费 | 久久亚洲视频 | 99久久99久久精品 | 日本欧美在线观看 | 人人超碰免费 | 日韩精品影院 | 久久成人综合 |