1. 程式人生 > >Android UI之五種基本佈局詳解

Android UI之五種基本佈局詳解

Android佈局是應用介面開發的重要一環,在Android中,共有五種佈局方式,分別是:

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

LinearLayout (線性佈局)

LinearLayout是一種線型的佈局方式。LinearLayout佈局容器內的元件一個挨著一個地排列起來:不僅可以控制個元件橫向排列,也可控制各元件縱向排列。

  • android:orientation 屬性指定了排列方向是 vertical,如果指定的是horizontal,控制元件就會在水平方向上排列了。
  • android:gravity 是用 於指定文字在控制元件中的對齊方式
  • android:layout_gravity 是用於指定控制元件在佈局中的對齊 方式 RelativeLayout 相對佈局
  • android:layout_weight=”1”(權重分佈),這個weight在垂直佈局時,代表行距;水平的時候代表列寬;weight值越大就越大。
  • android:visibility=invisible控制佈局是否顯示 :1、顯示 visible 2、不顯示,但佔空間 invisible 3、隱藏 gone

RelativeLayout(相對佈局)

是一種相對佈局,控制元件的位置是按照相對位置來計算的,後一個控制元件在什麼位置依賴於前一個控制元件的基本位置,是佈局最常用,也是最靈活的一種佈局。

分類方式一
a)、第一類:屬性值為true或false
  android:layout_centerHrizontal 水平居中
  android:layout_centerVertical 垂直居中
  android:layout_centerInparent 相對於父元素完全居中
  android:layout_alignParentBottom 貼緊父元素的下邊緣
  android:layout_alignParentLeft 貼緊父元素的左邊緣
  android:layout_alignParentRight 貼緊父元素的右邊緣
  android:layout_alignParentTop 貼緊父元素的上邊緣  
b)、第二類:屬性值必須為id的引用名“@id/id-name”
  android:layout_below 在某元素的下方
  android:layout_above 在某元素的的上方
  android:layout_toLeftOf 在某元素的左邊
  android:layout_toRightOf 在某元素的右邊
  android:layout_alignTop 本元素的上邊緣和某元素的的上邊緣對齊
  android:layout_alignLeft 本元素的左邊緣和某元素的的左邊緣對齊
  android:layout_alignBottom 本元素的下邊緣和某元素的的下邊緣對齊
  android:layout_alignRight 本元素的右邊緣和某元素的的右邊緣對齊

c)、第三類:屬性值為具體的畫素值,如30dip,40px
  android:layout_marginBottom 離某元素底邊緣的距離
  android:layout_marginLeft 離某元素左邊緣的距離
  android:layout_marginRight 離某元素右邊緣的距離
  android:layout_marginTop 離某元素上邊緣的距離
  
分類方式二
  android:layout_marginTop=”25dip” //頂部距離
  android:gravity=”left” //空間佈局位置
  android:layout_marginLeft=”15dip //距離左邊距
相對於給定ID控制元件
  android:layout_above 將該控制元件的底部置於給定ID的控制元件之上;
  android:layout_below 將該控制元件的底部置於給定ID的控制元件之下;
  android:layout_toLeftOf 將該控制元件的右邊緣與給定ID的控制元件左邊緣對齊;
  android:layout_toRightOf 將該控制元件的左邊緣與給定ID的控制元件右邊緣對齊;
  android:layout_alignBaseline 將該控制元件的baseline與給定ID的baseline對齊;
  android:layout_alignTop 將該控制元件的頂部邊緣與給定ID的頂部邊緣對齊;
  android:layout_alignBottom 將該控制元件的底部邊緣與給定ID的底部邊緣對齊;
  android:layout_alignLeft 將該控制元件的左邊緣與給定ID的左邊緣對齊;
  android:layout_alignRight 將該控制元件的右邊緣與給定ID的右邊緣對齊;
相對於父元件
  android:layout_alignParentTop 如果為true,將該控制元件的頂部與其父控制元件的頂部對齊;
  android:layout_alignParentBottom 如果為true,將該控制元件的底部與其父控制元件的底部對齊;
  android:layout_alignParentLeft 如果為true,將該控制元件的左部與其父控制元件的左部對齊;
  android:layout_alignParentRight 如果為true,將該控制元件的右部與其父控制元件的右部對齊;
居中
  android:layout_centerHorizontal 如果為true,將該控制元件的置於水平居中;
  android:layout_centerVertical 如果為true,將該控制元件的置於垂直居中;
  android:layout_centerInParent 如果為true,將該控制元件的置於父控制元件的中央;
指定移動畫素
  android:layout_marginTop 上偏移的值;
  android:layout_marginBottom 下偏移的值;
  android:layout_marginLeft   左偏移的值;
  android:layout_marginRight   右偏移的值;
  
基本屬性
  android:id — 為控制元件指定相應的ID
  android:text — 指定控制元件當中顯示的文字,需要注意的是,這裡儘量使用strings.xml檔案當中的字串
  android:grivity — 指定控制元件的基本位置,比如說居中,居右等位置這裡指的是控制元件中的文字位置並不是控制元件本身。
  android:textSize — 指定控制元件當中字型的大小
  android:background — 指定該控制元件所使用的背景色,RGB命名法
  android:width — 指定控制元件的寬度
  android:height — 指定控制元件的高度
  android:padding* — 指定控制元件的內邊距,也就是說控制元件當中的內容
  android:sigleLine — 如果設定為真的話,則控制元件的內容在同一行中進行顯示

FrameLayout(幀佈局)

  FrameLayout物件好比一塊在螢幕上提前預定好的空白區域,可以將一些元素填充在裡面,如圖片。所有元素都被放置在FrameLayout區域的最左上區域,而且無法為這些元素制指定一個確切的位置,若有多個元素,那麼後面的元素會重疊顯示在前一個元素上。

TableLayout(表格佈局)

TableLayout是指將子元素的位置分配到行或列中。Android的一個TableLayout有許多TableRow組成,每一個TableRow都會定義一個Row。TableLayout容器不會顯示Row,Column,及Cell的邊框線,每個Row擁有0個或多個Cell,每個Cell擁有一個View物件。在使用tablelayout時,應注意每一個cell的寬度。

(1)TableLayout行列數的確定
- TableLayout的行數由開發人員直接指定,即有多少個TableRow物件(或View控制元件),就有多少行
- TableLayout的列數等於含有最多子控制元件的TableRow的列數。如第一TableRow含2個子控制元件,第二個TableRow含3個,第三個TableRow含4個,那麼該TableLayout的列數為4.

(2)TableLayout可設定的屬性詳解

TableLayout可設定的屬性包括全域性屬性及單元格屬性。

  1. 全域性屬性也即列屬性,有以下3個引數:
      android:stretchColumns 設定可伸展的列。該列可以向行方向伸展,最多可佔據一整行。
      android:shrinkColumns 設定可收縮的列。當該列子控制元件的內容太多,已經擠滿所在行,那麼該子控制元件的內容將往列方向顯示。
      android:collapseColumns 設定要隱藏的列。
    示例:
      android:stretchColumns=”0” 第0列可伸展
      android:shrinkColumns=”1,2” 第1,2列皆可收縮
      android:collapseColumns=”*” 隱藏所有行
      

    說明:列可以同時具備stretchColumns及shrinkColumns屬性,若此,那麼當該列的內容N多時,將“多行”顯示其內容。(這裡不是真正的多行,而是系統根據需要自動調節該行的layout_height)

  2. 單元格屬性,有以下2個引數:
      android:layout_column 指定該單元格在第幾列顯示
      android:layout_span 指定該單元格佔據的列數(未指定時,為1)
      示例:
      android:layout_column=”1” 該控制元件顯示在第1列
      android:layout_span=”2” 該控制元件佔據2列

  說明:一個控制元件也可以同時具備這兩個特性。

GridLayout 網格佈局

GridLayout佈局使用虛細線將佈局劃分為行、列和單元格,也支援一個控制元件在行、列上都有交錯排列。而GridLayout使用的其實是跟LinearLayout類似的API,只不過是修改了一下相關的標籤而已,所以對於開發者來說,掌握GridLayout還是很容易的事情。GridLayout的佈局策略簡單分為以下三個部分:

  1. 首先它與LinearLayout佈局一樣,也分為水平和垂直兩種方式,預設是水平佈局,一個控制元件挨著一個控制元件從左到右依次排列,但是通過指定Android:columnCount設定列數的屬性後,控制元件會自動換行進行排列。另一方面,對於GridLayout佈局中的子控制元件,預設按照wrap_content的方式設定其顯示,這隻需要在GridLayout佈局中顯式宣告即可。
  2. 其次,若要指定某控制元件顯示在固定的行或列,只需設定該子控制元件的android:layout_row和android:layout_column屬性即可,但是需要注意:android:layout_row=”0”表示從第一行開始,android:layout_column=”0”表示從第一列開始,這與程式語言中一維陣列的賦值情況類似。
  3. 最後,如果需要設定某控制元件跨越多行或多列,只需將該子控制元件的android:layout_rowSpan或者layout_columnSpan屬性設定為數值,再設定其layout_gravity屬性為fill即可,前一個設定表明該控制元件跨越的行數或列數,後一個設定表明該控制元件填滿所跨越的整行或整列。
    AbsoluteLayout
    android:layout_x 指定控制元件在父佈局的x軸座標
    android:layout_y 指定控制元件在父佈局的 y軸座標

AbsoluteLayout(絕對佈局)

絕對佈局極少使用,在不是絕對要使用的情況下就絕對不要用

相關推薦

Android UI基本佈局

Android佈局是應用介面開發的重要一環,在Android中,共有五種佈局方式,分別是: LinearLayout (線性佈局) RelativeLayout(相對佈局) FrameLayout(幀佈局) TableLayout(表格佈局)GridLay

android開發基本佈局

1.LinerLayout 又稱線性佈局 特有屬性: layout_weight按照比例指定控制元件大小 2.RelativeLayout 又稱相對佈局 常用屬性: <ImageView android:id="@+id/imageViews"

跟我一起學Redis基本型別及其應用場景舉例(幹了6個小時)

**前言** 來啦,老弟?來啦,上一篇就當嘮嘮嗑,接下來就開始進行實操擼命令,計劃是先整體單純說說Redis的各種用法和應用,最後再結合程式碼歸納總結。 Redis預設有16個數據庫(編號為0~15),預設使用第0個,通過命令select任意切換資料庫,和MySql切換資料庫一個道理;各資料庫之間的資

【資料結構必備基礎知識】圖的基本概念

一、前言 從今天開始就給大家分享有關於圖的概念和程式碼啦,不知道大家有沒有看夠樹的相關內容呢?以後還會慢慢給大家再分享的,程式碼要一遍一遍過,一輪一輪學習。第一輪樹就先到這裡,等第二輪還會給大家分享的。 圖應該是資料結構中處於霸王地位的一部分了,圖會涉及到圖論的相關知識,咱們現在還涉及不

android開發wheel控制元件使用

出門在外生不起病呀,隨便兩盒藥60多塊錢。好吧,不廢話了,今天我們來看看wheel控制元件的使用,這是GitHub上的一個開源控制元件,用起來十分方便,我們可以用它做許多事情,比如做一個自定義的datepicker,在一些電商App中,經常用它來做省市縣三級聯動,總之用途還是

.Neter玩轉Linux系列:crontab使用和Linux的程序管理以及網路狀態監控

基礎篇 實戰篇 一、crontab使用詳解  概述:任務排程:是指系統在某個時間執行的特定的命令或程式。 任務排程分類:       (1)系統工作:有些重要的工作必須周而 復始地執行。       (2)個別使用者工作:個別使用者可能希望執 行某些程式。

ACM圖論基本演算法

圖論基本演算法 DFS,BFS 兩個生成樹prim + Kruskal 4個最短路徑Dijkstra+Floyd+Bellman-Ford+SPFA DFS&BFS DFS——遍歷所有解 模板: void DFS( Point

Java 8系列Stream的基本語法

Stream系列: 概述 繼Java 8系列之Lambda表示式之後,我們來了解Stream。Stream 是用函數語言程式設計方式在集合類上進行復雜操作的工具,其集成了Java 8中的眾多新特性之一的聚合操作,開發者可以更容易地使用Lambda表示

Android開發WebView和JS互動

Android提供了一個很強大的WebView控制元件用來處理Web網頁,而在網頁中,JavaScript又是一個很舉足輕重的指令碼。本文將介紹如何實現Java程式碼和Javascript程式碼的相互呼叫。 如何實現 實現Java和js互

Android 開發使用Eclipse Debug除錯

Ctrl+1 快速修復(最經典的快捷鍵,就不用多說了) Ctrl+D: 刪除當前行  Ctrl+Alt+↓ 複製當前行到下一行(複製增加) Ctrl+Alt+↑ 複製當前行到上一行(複製增加) Alt+↓ 當前行和下面一行互動位置(特別實用,可以省去先剪下,再貼上了) Alt+↑ 當前行和上面一行互動位置(同

Spring事務Transaction配置的注入方式

前段時間對Spring的事務配置做了比較深入的研究,在此之間對Spring的事務配置雖說也配置過,但是一直沒有一個清楚的認識。通過這次的學習發覺Spring的事務配置只要把思路理清,還是比較好掌握的。     總結如下:     Spring配置檔案中關於事務配置總是由

java23設計模式-前型模式

走穿23種設計模式-前五種,建立型模式詳解總體來說設計模式分為三大類(23種):建立型模式,共五種:單例模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式。結構型模式,共七種。介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。行為型模式,共十一種。

java八基本型別

轉載至:https://www.cnblogs.com/TTTTT/p/6541270.html變數就是申請記憶體來儲存值。也就是說,當建立變數的時候,需要在記憶體中申請空間。記憶體管理系統根據變數的型別為變數分配儲存空間,分配的空間只能用來儲存該型別資料。因此,通過定義不同

1.1 4基本佈局

整理了部分入門級佈局,可以無聊的時候看看二、相對佈局RelativeLayout又稱相對佈局,相對LinearLayout的排列規則更顯隨意,例如修改activity_main.xml中的程式碼如下所示:<RelativeLayout xmlns:android="ht

Android專案JSON解析(3解析技術

前言: 在我寫部落格前再宣告一下,我希望轉載我文章的某某某記得註明:(),要尊重我的勞動成果,這樣才能給我更多的支援和鼓勵!差不多有3天沒有寫部落格了,要想的、要做的事情太多了,額....原歸正傳,今天接著上一篇部落格:Android專案之JSON解析(扯淡),繼續分享我對

IOS基礎UI()UIAlertView、UIActionSheet和UIAlertController

     iOS 8的新特性之一就是讓介面更有適應性、更靈活,因此許多檢視控制器的實現方式發生了巨大的變化。比如說Alert Views、Action Sheets。 下面就大致介紹它們的使用方式。     UIAlertView:   1.建立UIAlertView

Android UI RecyclerView實現常見首頁佈局

一丶效果演示 實現功能: 1.底部tab欄,切換“首頁”,“我的” 2.頂部banner,APP常見首頁用於展示活動詳情或者近期熱門,這裡用來展示個人“CSDN” “簡書” “github” 3.中間選單欄,導航APP各模組,這裡作為後面將自學的內容模組,“Java基

AndroidAndroid開發常用的loading等待效果實現,仿微博等待動畫。兩實現方式

長期維護的Android專案,裡面包括常用功能實現,以及知識點詳解, 當然還有Java中的知識點。 具體請看github:https://github.com/QQ986945193/DavidAndroidProjectTools 首先大家都知道,當我

Android基本佈局

1.LinearLayout   LinearLayout又稱為線性佈局,這個佈局會將它所包含的控制元件線上性方向上依次排列。 (1)android:orientation屬性 <LinearLayout xmlns:android="http://schemas.

Android中的佈局

線性佈局 ---LinearLayout 預設的方向是 horizontal--- 水平方向 如果想修改方向,只要指定 android:orientation="vertical" 即可 layout_weight: 設定權重,實際上就是當前控制元件所佔的空間比例、 相對