android 五大布局


 

前言

android開發中UI必備知識。android 五大布局及相關屬性介紹。

一、布局介紹

1.FrameLayout:框架布局

2.LinearLayoyut:線性布局

3.AbsolutLayout:絕對布局

4.RealativeLayout:相對布局

5.TableLayout:b:;表格布局

1.1、FrameLayout框架布局

  • 布局特點:放入其中的所有元素都被放置在最左上的區域,而且無法為這些元素指定一個確切的位置,下一個子元素會重疊覆蓋上一個子元素
  • 應用場景:適合瀏覽單張圖片

1.2、LinearLayout線性布局

  • 布局特點:放主要提供控件水平或者垂直排列的模型,每個子組件 
    都是以垂直或水平的方式來線性排布.(默認是垂直)
  • 應用場景:最常用的布局方式
  • linearLayout中有一個重要的屬性 android:layout_weight=”1”,這個weight在垂直布局時,代表行距;水平的時候代表列寬;weight值越大就越大。

1.3、AbsoluteLayout絕對定位布局

  • 布局特點:采用坐標軸的方式定位組件,左上角是(0,0)點,往右x軸遞增,往下Y軸遞增,組件定位屬性為android:layout_x和 android:layout_y來確定坐標。
  • 應用場景:准確定位空間位置

1.4、RelativeLayout相對布局

  • 布局特點:為某一個組件為參照物,來定位下一個組件的位置的布局方式。
  • 應用場景:控件之間存在相應關系(適配神器,推薦使用)

1.5、TableLayout表格布局

  • 布局特點:類似Html里的Table.使用TableRow來布局,其中TableRow代表一行,TableRow的每一個視圖組件代表一個單元格。
  • 應用場景:控件之間存在相應關系。

這五個布局元素可以相互嵌套應用,做出美觀的界面。

二、布局屬性配置

2.1、五種屬性基本配置

  • layout_width & layout_height
  • layout_margin+方位 & padding+方位
  • layout_gravity & gravity

2.2、paddingLeft與android:layout_marginLeft的區別:

  padding是控件的內容相對控件的邊緣的邊距; 
  layout_margin是控件邊緣相對父控件的邊距;

2.3、android gravity和layout_gravity區別:  

    1. gravity屬性:是對該view 內容的位置的設置。 
  比如一個button 上面的text. 你可以設置該text 在view的靠左,靠右等位置. 
  2. layout_gravity屬性:是用來設置該view相對與父view 的位置。 
  比如一個button 在Linearlayout里,你可以通過設置該屬性把該button放在父布局Linearlayout靠左靠右等位置。

三、各種Layout的特有屬性

3.1 FrameLayout

作為最簡單的Layout,只具備基礎屬性

3.2 AbsoluteLayout

除了基礎屬性外,AbsoluteLayout還具備:

  • layout_x:指定控件的x坐標
  • layout_y:指定控件的x坐標

上述屬性的取值均為固定值。

3.3 TableLayout

除了基礎屬性外,由於TableLayout的行TableRow是一個橫向的(horizontal)的LinearLayout,所以具備LinearLayout的屬性

3.4 LinearLayout

除了基礎屬性,還會有:

  • orientation 
    1.作用:設置布局內控件的排列方式 
    2.取值:vertical(垂直排列-默認值)、horizontal(水平排列)
  • layout_weight 
    1.定義:是線性布局(Linelayout)的一個獨特比例分配屬性 
    2.作用:使用此屬性設置權重,然后按照比例對界面進行空間的分配,公式計算是:控件寬度=控件設置寬度+剩余空間所占百分比寬幅 

3.5 RelativeLayout

RelativeLayout的屬性算是最多的了,除了基本屬性外,還有: 
a. 相對於父空間

XML屬性 說明
layout_alignParentBottom 當前控件底端與父控件的底端對齊
layout_alignParentLeft 當前控件左端與父控件的左端對齊
layout_alignParentRight 當前控件右端與父控件的右端對齊
layout_alignParentTop 當前控件上端與父控件的上端對齊
layout_centerHorizontal 當前控件位於父控件的橫向中間位置(水平方向上的中間)
layout_centerVertical 當前控件位於父控件的縱向中間位置(平面上的正中間)
layout_centerInParent 當前控件位於父控件的縱橫向中間位置(垂直方向上的中間)

上述所有屬性的取值皆為boolean屬性:true、false。

b. 相對於給定控件

 

XML屬性 說明
layout_above 使當前控件位於給出id控件的上方
layout_below 使當前控件位於給出id控件的下方
layout_toLeftOf 使當前控件位於給出id控件的左側
layout_toRightOf 使當前控件位於給出id控件的右側
layout_alignBottom 使當前控件與給出id控件的底部部重合
layout_alignLeft 使當前控件與給出id控件的左邊重合
layout_alignRight 使當前控件與給出id控件的右邊重合
layout_alignTop 使當前控件與給出id控件的頂部重合
layout_alignBaseline 使當前控件的BaseLine與給出id控件t的BaseLine重合

 

 

 

4. 選擇器selector.xml的屬性

4.1 作用 

通過設置selector.xml可使得控件在不同操作下(默認、點擊、焦點等)的顯示不同樣式

4.2 屬性

XML屬性 說明
android:drawable 放一個drawable資源
android:state_pressed 按下狀態,如一個按鈕觸摸或者點擊。
android:state_focused 取得焦點狀態,比如用戶選擇了一個文本框。
android:state_hovered 光標懸停狀態
android:state_selected 選中狀態
android:state_enabled 能夠接受觸摸或者點擊事件

上述所有屬性的取值皆為boolean屬性:true、false。

4.3 實例說明 

在drawable添加selector.xml資源文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM