Android精通:TableLayout佈局,GridLayout網格佈局,FrameLayout幀佈局,AbsoluteLayout絕對佈局,RelativeLayout相對佈局

来源:https://www.cnblogs.com/dashucoding/archive/2018/08/19/9503287.html
-Advertisement-
Play Games

在Android中提供了幾個常用佈局: 1. 線性佈局 2. 相對佈局 3. 幀佈局 4. 絕對佈局 5. 表格佈局 6. 網格佈局 TableLayout表格佈局 TableLayout的介紹 是將子類向分別排列成行和列的佈局視圖容器, 是由許多 對象組成的,表格佈局以行列的形式管理子控制項,每一個 ...


標題圖

在Android中提供了幾個常用佈局:

  1. LinearLayout線性佈局
  2. RelativeLayout相對佈局
  3. FrameLayout幀佈局
  4. AbsoluteLayout絕對佈局
  5. TableLayout表格佈局
  6. GridLayout網格佈局

TableLayout表格佈局

TableLayout表格佈局.png

TableLayout的介紹

TableLayout是將子類向分別排列成行和列的佈局視圖容器,TableLayout是由許多TableRow對象組成的,表格佈局以行列的形式管理子控制項,每一個單元是一個TableRow或者View對象。

TableLayout中可以通過setConlumnShrinkable()setConlumnStretchable()方法來指定某些列為可以縮小或可伸縮,列是從0開始計數的,第一列為0。

屬性

常用的幾種屬性:

stretchColumns設置運行被拉伸的列的序號,如android:stretchColumns="2,3"表示在第三列的和第四列的一起填補空白,如果要所有列一起填補空白,則用“*”符號,列號都是從0開始算的。

shrinkColumns設置被收縮的列的序號,收縮是用於在一行中列太多或者某列的內容文本過長,會導致某列的內容會被擠出屏幕,這個屬性是可以幫助某列的內容進行收縮,用於防止被擠出的。

android:collapseColumns設置需要被隱藏的列的序號,使用該屬性可以隱藏某列。

android:layout_column為該子類控制項顯示在第幾列android:layout_column="2"表示跳過第二個,直接顯示在第三個單元格內。

android:layout_span為該子類控制項占據第幾列android:layout_span="3"表示合併3個單元格,就是這個組件將占據3個單元格。

collapseColumns隱藏列

效果如圖:

tablelayout

android:collapseColumns = "0,2",用於隱藏第一列和第三列,代碼如下:

<TableLayout
  android:id="@+id/TableLayout"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:collapseColumns="0,2" >
 <TableRow>

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="one" />

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="two" />

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="three" />

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="four" />

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="five" />
  </TableRow>
</TableLayout>

stretchColumns拉伸列

android:stretchColumns = “1”,設置為第二列為可拉伸列的列,讓該列填滿這一行所有的剩餘空間,也就是在整個父寬度的情況在,放幾個按鈕,剩下的空間寬度將用第二列填滿,代碼如下:

tablelayout

<TableLayout
  android:id="@+id/TableLayout"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:stretchColumns="1" >

  <TableRow>

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="one" />

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="two" />

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="three" />

  </TableRow>
</TableLayout>

shrinkColumns收縮列

android:shrinkColumns="1"表示將第二列的內容進行收縮,如果屏幕的額寬度包容不下的話,就會拿第二列進行收縮,就是壓扁,拉長。如同上代碼進行修改即可,多加些內容,讓其文本內容超出屏幕吧!

GridLayout網格佈局

GridLayout網格佈局是在Android 4.0以後引入的一種新的佈局模式,和表格佈局是有點類似的,但比表格佈局的好,功能也是很強大的,它可以設置佈局有多少行和有多少列,也可以設置佈局中的組件的排列方式,也可以設置組件的位置,橫跨多少行,多少列。

屬性的那點東西

android:orientation用於設置vertical豎直或horizontal水平。

android:layout_gravity設置對齊方式,可以設置center,right,left等。

android:rowCount可以設置行數,要多少行設置多少行,如android:rowCount="2"為設置網格佈局有2行。

android:columnCount可以設置列數,要多少列設置多少列,如android:columnCount="2"為設置網格佈局有2列。

android:layout_row設置組件位於第幾行,從0開始計數的,如android:layout_row="1"為設置組件在第2行。

android:layout_column設置組件位於第幾列,從0開始計數的,如android:layout_column="1"為設置組件在第2列。

android:layout_rowSpan設置組件橫跨幾行,如android:layout_rowSpan="2"為縱向橫跨2行。

android:layout_columnSpan設置組件橫跨幾列,如android:layout_columnSpan="2"為橫向橫跨2列。

註意事項:低版本sdk是如何使用GridLayout的呢?要導入v7包的gridlayout包即可,因為GirdLayout是4.0後才推出的,標簽代碼。

<android.support.v7.widget.GridLayout>

FrameLayout幀佈局

FrameLayout幀佈局是什麼樣的呢?所有子控制項都放在左上角且後面元素都是直接覆蓋在前面元素之上一種佈局模式。

常用屬性:

android:foreground設置改幀佈局容器的前景圖像,什麼是前景圖像,前景圖像是永遠處於幀佈局容器的最上面的圖像,就是不會被覆蓋的圖片。

android:foregroundGravity設置前景圖像顯示的位置

列子代碼

FrameLayout

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/FrameLayout"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <TextView
  android:layout_width="200dp"
  android:layout_height="200dp"
  android:background="#FF6143" />
  <TextView
  android:layout_width="150dp"
  android:layout_height="150dp"
  android:background="#7BFE00" />
  <TextView
  android:layout_width="100dp"
  android:layout_height="100dp"
  android:background="#FFFF00" />

</FrameLayout>

用幀佈局可以做出霓虹燈的效果,即為每個TextVeiw設置layout_gravity="center"即可,即可以看到不一樣的效果。

效果

AbsoluteLayout絕對佈局

AbsoluteLayout絕對佈局是通過x,y位置來為子控制項設置位置的,即android:layout_x和android:layout_y屬性。

四大控制屬性.png

由於絕對佈局不常見,不常用,因為在不同大小的適配屏幕上的位置直觀上會變化,適應能力差,所以不建議使用。

RelativeLayout相對佈局

RelativeLayout是一個相對佈局的視圖組,用來顯示相對位置的子視圖類,在預設情況下,所有子視圖對會分佈在左上角。

這裡簡單溫習一下相關屬性即可:

android:layout_below位於某控制項下方,以id為標記
android:layout_above位於某控制項上方,以id為標記
android:layout_toLeftOf位於某控制項左方,以id為標記
android:layout_toRightOf位於某控制項右方,以id為標記

android:layout_alignBottom與某控制項底部對齊,以id為標記
android:layout_alignTop與某控制項頂部對齊,以id為標記
android:layout_alignLeft與某控制項左邊緣對齊,以id為標記
android:layout_alignRight與某控制項右邊緣對齊,以id為標記

android:layout_alignBaseline與某控制項的文本內容在一條直線上

android:layout_alignParentBottom在父容器最下,為true或false
android:layout_alignParentTop在父容器最上,為true或false
android:layout_alignParentLeft在父容器最左,為true或false
android:layout_alignParentRight在父容器最右,為true或false

android:layout_marginTop和父容器上端的距離,單位為dp
android:layout_marginBottom和父容器下端的距離,單位為dp
android:layout_marginLeft和父容器左端的距離,單位為dp
android:layout_marginRight和父容器右端的距離,單位為dp
android:layout_margin和父容器四周的距離,單位為dp

android:layout_centerVertical在父類的垂直居中,為true或false
android:layout_centerHorizontal在父類的水平居中,為true或false
android:layout_centerInParent在父類的水平垂直居中

結論

線性佈局:
指子控制項以水平或垂直方式排列

相對佈局:
指子控制項以控制項之間的相對位置或子控制項相對於父容器的位置排列

幀佈局:
指所有子控制項均放在左上角且後面元素直接覆蓋在前面元素之上

絕對佈局:
指子控制項通過絕對定位x,y位置來決定其位置擺放

表格佈局:
指以行列的形式放置子控制項,每一行是一個TableRow對象或者View對象

結語

  • 本文主要講解 Android精通:TableLayout佈局,GridLayout網格佈局,FrameLayout幀佈局,AbsoluteLayout絕對佈局,RelativeLayout相對佈局
  • 下麵我將繼續對Java、 Android中的其他知識 深入講解 ,有興趣可以繼續關註
  • 小禮物走一走 or 點贊

送❤


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

-Advertisement-
Play Games
更多相關文章
  • 主要是常用的hbase shell命令,包括表的創建與刪除,表數據的增刪查【hbase沒有修改】;以及hbase的導出與導入。 參考教程:HBase教程 參考博客:hbase shell基礎和常用命令詳解 參考博客:hbase shell常用命令和filter 參考博客:hbase導入導出數據 1. ...
  • 恢復內容開始 1、MySQL概述 1.什麼是資料庫? 存儲數據的倉庫 2.都有哪些公司在用資料庫? 金融機構、游戲公司、購物網站、論壇網站... 3.提供資料庫服務的軟體? 1.軟體分類 MySQL、Oracle、SQL_Server、DB2、MongoDB、MariaDB 2.生產環境中,如何選擇 ...
  • MongoDB:NoSQL資料庫 MongoDB中的重要指示點 MongoDB中的三要素 資料庫 集合 文檔 MongoDB中的數據存儲是以Bson的形式存儲的,Bson是二進位的json,所以看上去記錄的形式類似於json數據 MongoDB中集合中的數據不同於關係型資料庫中的數據,MongoDB ...
  • 1.事務 在sql servce 中 事務是一個工作單元 可能包含查詢和修改數據以及修改數據定義等多個活動 也可以顯示或隱式定義事務邊界 顯示定義事務 BEGIN TRAN 開始 如果要提交事務 使用 COMMIT TRAN 撤銷事務(回滾) ROLLBACK TRAN 如下示例 一個簡單的顯示事務 ...
  • Redis簡介 Redis是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 Redis是 NoSQL技術陣營中的一員,它通過多種鍵值數據類型來適應不同場景下的存儲需求,藉助一些高層級的介面使用其可以勝任,如緩存、隊列系統 ...
  • 1、主從複製簡而言之為將主redis的數據同步到從redis,達到主從數據一致。主從複製應用: 讀寫分離 容災備份 2、怎樣設置主從? 原則:配從不配主 方式: a、在從redis中使用執行命令 slaveof host port [slaveof no one命令表示禁止和主機的同步] b、在從r ...
  • 連接查詢又稱多表查詢,查詢到的欄位來自於多個表中的數據。 一、 連接查詢的分類和語法 1.分類 按標準分: 92標準:只支持內連接 99標準:支持內連接和、外連接和全外連接 功能進行分類: 內連接:inner 等值連接 非等值連接 自連接 外連接: 左外連接left 【outer】 右外連接righ ...
  • MVP 模式將Activity 中的業務邏輯全部分離出來,讓Activity 只做 UI 邏輯的處理,所有跟Android API無關的業務邏輯由 Presenter 層來完成。 Model 層中包含著具體的數據請求,數據源。 Activity 和Fragment 視為View層,負責處理 UI。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...