Android裡merge和include標籤的使用及區別
1.使用 標籤來重用layout程式碼
如果在一個專案中需要用到相同的佈局設計,可以通過 標籤來重用layout程式碼,該標籤在Android開發文件中沒有相關的介紹。在android主屏程式中 用到了這個標籤:
<com.android.launcher.Workspace
android:id="@+id/workspace"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
launcher:defaultScreen="1">
<include android:id="@+id/cell1" layout="@layout/workspace_screen" />
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />
<include android:id="@+id/cell3"layout="@layout/workspace_screen" />
</com.android.launcher.Workspace>
這樣可以多次引用一個佈局片段而不用重複的複製、貼上。通過include標籤也可以覆寫一些屬性的值,例如上面的示例就覆寫了引用的layout中的id值。下面是另外一個示例:
<include android:layout_width="fill_parent"layout="@layout/image_holder" />
<include android:layout_width="256dip" layout="@layout/image_holder" />
2.使用 標籤來減少檢視層級結構
在Android layout檔案中需要一個頂級容器來容納其他的元件,而不能直接放置多個元件,例如如下的程式碼:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Golden Gate" />
</FrameLayout>
單獨將標籤做個介紹,是因為它在優化UI結構時起到很重要的作用。目的是通過刪減多餘或者額外的層級,從而優化整個Android Layout的結構。
3.將通過一個例子來了解這個標籤實際所產生的作用,這樣可以更直觀的瞭解的用法。
建立一個簡單的Layout,其中包含兩個Views元素:ImageView和TextView 預設狀態下我們將這兩個元素放在FrameLayout中。其效果是在主檢視中全屏顯示一張圖片,之後將標題顯示在圖片上,並位於檢視的下方。以下是xml程式碼:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="center_horizontal|bottom"
android:padding="12dip"
android:background="#AA000000"
android:textColor="#ffffffff"
android:text="Golden Gate" />
</FrameLayout>
在SDK目錄下tools資料夾下使用
tools> hierarchyviewer.bat工具檢視當前UI結構檢視:
我們可以很明顯的看到出現了兩個framelayout節點,很明顯這兩個完全意義相同的節點造成了資源浪費(這裡可以提醒大家在開發工程中可以習慣性的通過hierarchyViewer檢視當前UI資源的分配情況),那麼如何才能解決這種問題呢(就當前例子是如何去掉多餘的frameLayout節點)?這時候就要用到標籤來處理類似的問題了。我們將上邊xml程式碼中的framLayout替換成merge:
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="center_horizontal|bottom"
android:padding="12dip"
android:background="#AA000000"
android:textColor="#ffffffff"
android:text="Golden Gate" />
</merge>
執行程式後在Emulator中顯示的效果是一樣的,可是通過hierarchyviewer檢視的UI結構是有變化的,當初多餘的FrameLayout節點被合併在一起了,或者可以理解為將merge標籤中的子集直接加到Activity的FrameLayout跟節點下(這裡需要提醒大家注意:所有的Activity檢視的根節點都是frameLayout)。如果你所建立的Layout並不是用framLayout作為根節點(而是應用LinerLayout等定義root標籤),就不能應用上邊的例子通過merge來優化UI結構。
相關推薦
Android裡merge和include標籤的使用及區別
1.使用 標籤來重用layout程式碼 如果在一個專案中需要用到相同的佈局設計,可以通過 標籤來重用layout程式碼,該標籤在Android開發文件中沒有相關的介紹。在android主屏程式中 用到了這個標籤: <com.android.laun
include指令和include標籤的區別
區別 類別 語法 發生作用時間 包含的內容 轉化成Servlet 編譯時間 執行時間 include指令 <%@ include file=””
android merge與include標籤混合使用
前面一篇部落格講了merge標籤的使用場景以及用法,這篇就講一下include的使用,但是include標籤說起來比較簡單,所以就結合起merge標籤 一起來講。 merge標籤之前說過了,所以就不說了。include標籤的作用在於使得佈局檔案變得可複用,比如你在不同的佈局
【原創】android裡layout_width和width的區別
【】剛接觸android,遇到xml裡的android:layout_width和android:width,覺得他們類似,但是有說不出有什麼區別,google後覺得說的都不太明白,遂自己試驗,成果如下: 概括的說,view中的layout_width形容的是本view和父容器的關係,比如button和包含
include指令和include動作的區別
響應 而且 https 屬性方法 clu 目錄 轉換 jce 指向 include指令和include動作都能實現將外部文檔包含到JSP文檔中的功能,名稱也很相似,非常容易混淆。include指令和include動作到底有什麽分別,哪一種方式會更好呢?1.include指令
JSP中include指令和include動作的區別
1.include指令 語法格式:<%@include file="檔案的URL" %> 2.include動作 語法格式: 1)<jsp:include page="檔案的URL"/> 2)<jsp:include page="檔案的URL
Templates中的macro和include標籤
1.macro標籤 1.作用:相當於在模板中聲名函式 2.使用方法: 語法:{% macro 名稱(引數列表) %} xxx {% endmacro %} 建立 macro.html 模板檔案 --> 作用:定義專案中要用到的所
php中==和===的含義及區別
===比較兩個變數的值和型別;==比較兩個變數的值,不比較資料型別。 比如 $a = '123'; $b = 123; $a === $b為假; $a == $b為真; 有些情況下不能使用==,可以使用===,比如: <
【IOS】#import和#include有什麼區別,@class呢,#import<>跟#import ""有什麼區別?
1.#import是object-c匯入標頭檔案的關鍵字,#include是C/c++匯入標頭檔案的關鍵字,使用#import匯入標頭檔案會自動只匯入一次,不會重複匯入。 [email protected]是告訴編譯器某個類的宣告,當執行時,才會去檢視類的實現檔案,可以解決標頭檔案的相互包含。
Android MVC模式和MVP模式的區別
方向 pre con 發生 rdquo str enter model view MVC模式: 1. MVC的所有通信都是單向的。 2. view傳送指令到controller(用戶也可以直接將指令傳到controller)。 3.
Anaconda和canda簡介及區別
Anaconda簡介: 1.是一個開源的Python發行版本,其包含了conda、Python等軟體包,numpy,pandas(資料分析),scipy等科學計算包,而無需再單獨下載配置. 可以在同一個機器上安裝不同的軟體版本(python版本)。Anaconda 的下載檔案比較大(約 531 MB),如果只
Bagging和Boosting 概念及區別
Bagging和Boosting都是將已有的分類或迴歸演算法通過一定方式組合起來,形成一個性能更加強大的分類器,更準確的說這是一種分類演算法的組裝方法。即將弱分類器組裝成強分類器的方法。 首先介紹Bootstraping,即自助法:它是一種有放回的抽樣方法(可能抽到重複
學習筆記:include指令和include動作的區別 -- include動作和forward動作比較
<%@ include file =".." ...%>和<jsp:include> 1、靜態引入jsp檔案:jsp指令元素 <%@ include file="檔案路徑" %> (等於是將兩個jsp合併為一個jsp,就是將A.jsp的程式碼複製到B.
請求轉發和重定向 及區別
LoginServlet: package com.test.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet
H5 table tr標籤和td標籤的區別
<tr> 標籤定義 HTML 表格中的行。 一個 <tr> 元素包含一個或多個 <th> 或 <td> 元素。 <td> 標籤定義 HTML 表格中的標準單元格。 HTML 表格有兩種單元格型別: 表
關於html中src和href使用及區別
例子: <link href="" rel="stylesheet"> <script src="script.js"></script> <img src="image.jpg" alt="圖片無法顯示提示資訊"> href是Hy
Vue.js的computed和watch用法及區別
1. 如何使用 1.1 computed計算屬性 <template> <div> <el-input v-model="value1" placeholder="費用1"></el-input>
Android外掛化和熱修復的區別和聯絡
【原文地址 點選開啟連結】(文章最後一部分內容) 外掛化框架: 此處輸入圖片的描述 外掛化發展歷史:部落格一部落格二 說到未來,也不得不提去年出來的ReactNative,RN比外掛化更輕量級,越來越多人選擇了RN,或許會代替外掛化,雖然還有很多缺點,比如說沒網的時候
Android 記憶體溢位和記憶體洩漏的區別
android記憶體管理 android應用層是由java開發的,android的davlik虛擬機器與jvm也類似,只不過它是基於暫存器的。在java中,通過new為物件分配記憶體,所有物件在java堆內分配空間;而記憶體的釋放是由垃圾收集器(GC)來回收的。 Ja
Android 圖片選擇和拍照(剪輯)及壓縮問題 工具類
圖片選擇和拍照在開發過程中,會遇到不少坑: 1.版本4.4以後選擇圖片後不會返回絕對路徑,但返回Uri,要再查詢一次 2.去剪輯時,設定了true的話直接返回bitmap,可能會很佔記憶體,有些機子會掛掉(OOM)或者不會返回 3.圖片未更好的壓縮,應該做到寬高比壓縮後