Android Layout XML屬性

来源:http://www.cnblogs.com/glimpse/archive/2016/03/04/5240397.html
-Advertisement-
Play Games

轉載自並做少量添加:http://www.cnblogs.com/playing/archive/2011/04/07/2008620.html Layout對於迅速的搭建界面和提高界面在不同解析度的屏幕上的適應性具有很大的作用。這裡簡要介紹Android的Layout和研究一下它的實現。 Andr


轉載自並做少量添加:http://www.cnblogs.com/playing/archive/2011/04/07/2008620.html

 

Layout對於迅速的搭建界面和提高界面在不同解析度的屏幕上的適應性具有很大的作用。這裡簡要介紹Android的Layout和研究一下它的實現。

Android有Layout:LinearLayout、TableLayout、RelativeLayout、FrameLayout、GridLayout、AbsoluteLayout

放入Layout中進行排布的View的XML屬性:

1.幾種Layout中Item所共有的XML屬性:

  • (1)layout_width
  • (2)layout_height

註: (1)和(2)用來確定放入Layout中的View的寬度和高度:它們的可能取值為fill_parent,wrap_content或者固定的像素值。

  • (3)layout_marginLeft         --->paddingLeft
  • (4)layout_marginTop         --->paddingTop
  • (5)layout_marginRight       --->paddingRight
  • (6)layout_marginBottom    --->paddingBottom
  • (補)layout_margin              --->padding

 註:(3)(4)(5)(6)是放入Layout中的View期望它能夠和Layout的邊界或者其他View之間能夠相距一段距離。

android:paddingLeft與android:layout_marginLeft的區別:

      padding margin都是邊距的含義,關鍵問題得明白是什麼相對什麼的邊距.
      padding是控制項的內容相對控制項的邊緣的邊距.如果是一個控制項的話那麼就是,空間內容相對於控制項邊緣的距離。但是在父控制項中設置,那麼就是子控制項相對於父控制項邊緣的距離。

      layout_margin是控制項邊緣相對父空間的邊距.這個要分佈局,如果是線性佈局,裡面的空間一個接一個排的話,那麼會是和下一個控制項的距離。如果是相對佈局不設置控制項之間的關係會只和父控制項產生邊距。

  • (7)layout_gravity

註:(7)用來確定View在Layout中的停靠位置。

android gravity和layout_gravity區別

  android:gravity 屬性是對該view里的內容的限定.比如一個button裡面的text.  你可以設置該text 在view的靠左,靠右等位置.該屬性就乾這個。
      android:layout_gravity是用來設置該view相對與起父view 的位置.比如一個button 在linearlayout里,你想把該button放在靠左靠右等位置就可以通過該屬性設置.

這樣就解釋了,為什麼我們弄個最外佈局,然後裡面包了幾個佈局,如果要使這幾個佈局都靠底,就可以在這幾個佈局的父佈局的屬性里設置androi:gravity="bottom"  因為gravity是對裡面的內容起作用.

FrameLayout是最簡單的Layout,就只具有這些屬性。一層層往上糊的佈局。

LinearLayout還會有:

  • (8)layout_weight

註: (8)用於在LinearLayout中把所有子View排布之後的剩餘空間按照它們的layout_weight分配給各個擁有這個屬性的View。

RelativeLayout有16個align相關的XML屬性:

  • (9 )layout_alignParentBottom    當前控制項低端與父控制項的低端對齊(重合)
  • (10)layout_alignParentLeft        當前控制項左端與父控制項的左端對齊(重合)
  • (11)layout_alignParentRight      當前控制項右端與父控制項的右端對齊(重合)
  • (12)layout_alignParentTop        當前控制項上端與父控制項的上端對齊(重合)
  • (13)layout_centerHorizontal      當前控制項位於父控制項的橫向中間位置(水平方向上的中間)
  • (14)layout_centerInParent        當前控制項位於父控制項的縱橫向中間位置(垂直方向上的中間)
  • (15)layout_centerVertical          當前控制項位於父控制項的縱向中間位置(平面上的正中間)
  • (16)layout_above             使當前控制項位於給出id控制項的上方
  • (17)layout_below             使當前控制項位於給出id控制項的下方
  • (18)layout_toLeftOf          使當前控制項位於給出id控制項的左側
  • (19)layout_toRightOf        使當前控制項位於給出id控制項的右側
  • (20)layout_alignBottom     使當前控制項與給出id控制項的底部部重合(註意可用和給出id控制項來對齊)
  • (21)layout_alignLeft          使當前控制項與給出id控制項的左邊重合
  • (22)layout_alignRight        使當前控制項與給出id控制項的右邊重合
  • (23)layout_alignTop          使當前控制項與給出id控制項的頂部重合
  • (24)layout_alignBaseline    使當前控制項的BaseLine與給出id控制項t的BaseLine重合,這個主要用於Label或者其他包含文本的widgets。

 註:(9)到(24)用來確定RelativeLayout中的View相對於Layout或者Layout中的其他View的位置。

 GridLayout 網格佈局

  • (25)columnCount          設置該網格的列數量
  • (26)rowCount            設置該網格的行數量
  • (27)layout_column       設置該子組件在gridlayout的第幾列
  • (28)layout_columnSpan   設置該子組件在gridlayout橫向上跨幾行
  • (29)layout_gravity       設置該子組件採用何種方式占據該網格的空間
  • (30)layout_row                設置該子組件在gridlayout的第幾行
  • (31)layout_rowSpawn      設置該子組件在gridlayout縱向上跨幾行

AbsoluteLayout每個子組件都有兩個屬性

  • (32)layout_x
  • (33)layout_y

 TableLayout的行TableRow是一個橫向的(horizontal)的LinearLayout

  • (34)collapseColumns  設置需要被隱藏的列的列序號
  • (35)shrinkColumns        設置允許被收縮的列的列序號
  • (36)stretchColumns       設置允許被拉伸的列的列序號

註:(35)到(36)是tablelayout為其子控制項設置收縮、拉伸以至於完全適應空間。可以設置多個列序號,用逗號分開。

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------

TableLayout和GridLayout看起來就有很大的相似度,我們在這裡給區分一下。

TableLayout本身繼承於LinearLayout,所以本質還是線性佈局,並不能控制顯示多少行,顯示完後面的就顯示不出了。如果單獨一個控制項會獨占一行。如果想在一行里放多個控制項,就把多個控制項放在TableRow里,一個TableRow是一行。

GridLayout可以把容器劃分為rows*columns個網格,每個網格可以放置一個組件,除此之外還能設置一個組件可以跨越多少行、多少列。

GridLayout是很自由的。如果說要做一個格子類的頁面,GridLayout是優於TableLayout的。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一. 以“字元串”開頭 兩種用法的區別是: a. 以字元串開頭,需要用"-"分割開, b. 以字元串開頭,不需要任何分隔符 1. 資料 a) b) 2. html代碼 <div class="dot-4">橫線分割</div> <div class="dot">字元串本身</div> <div cl
  • <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style type="text/css"> body,div,ul,li,iframe{ margin: 0; padding: 0; fon
  • <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>錨點定位</title> <style type="text/css"> *{ margin: 0; padding: 0; } html,body{ width:
  • 轉載博客:http://blog.csdn.net/i_lovefish/article/details/17719081 以下為異常捕捉處理代碼: import java.io.BufferedReader; import java.io.File; import java.io.FileInpu
  • 分類:C#、Android、VS2015; 創建日期:2016-03-04 一、簡介 目前,基於位置的服務發展迅速,已涉及到商務、醫療、定位、追蹤、敏感區域警告、工作和生活等各個方面。定位服務融合了GPS定位、移動通信、導航等多種技術,從而獲取用戶終端設備的位置信息,為移動用戶提供了與空間位置相關的...
  • Android Studio 優秀插件系列: Android Studio 優秀插件(一):GsonFormat Android Studio 優秀插件(二): Parcelable Code Generator -------------------------------------------
  • Notification是Android中很理想的一種顯示提示信息的方法,它可以將應用程式的信息傳遞到我們的Android桌面狀態欄,採用這種消息傳遞方式不會影響到用戶對手機的正常使用。而且Notification不僅僅可以傳遞文字信息,還可以傳遞圖片信息,甚至可以將我們的控制項追加到上面,只要用戶不
  • 自己的學習筆記。
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...