Android之布局


<該文章參考各大博客以及書籍總結而來,如有問題歡迎指出^ ^>

一、五大傳統布局+新布局

  • 線性布局——LinearLayout
  • 相對布局——RelativeLayout
  • 幀布局——FrameLayout
  • 絕對布局——AbsoluteLayout
  • 表格布局——TableLayout
  • 約束布局——ConstraintLayout

二、介紹

(一)LinearLayout

1.簡介

線性布局,是最常用的布局之一,這個布局會將它所包含的控件在線性方向上依次排列,排列方向可以設定為水平方向或垂直方向。

2.屬性

 排列方向:

1 android:orientation="horizontal" //水平 
2 android:orientation="vertival" //垂直 

對齊方式:

1 android:gravity="centestar|end|top|left|right|center_vertical|center_horizontal"
2 android:layout_gravity

注意:android:gravity 指本元素的子元素相對它的對齊方式

          android:layout_gravity指本元素相對它的父元素的對齊方式

          但凡加上'layout_'前綴的屬性,則意味着是本元素相對其父元素的屬性

          center :居中顯示,但並不表示顯示在LinearLayout的中心,當LinearLyout線性方向為垂直方向時,等同於center_horizental;水平方向時,等同於cental_vertical

          start和left end和right :這里對於中國的情況,兩者的效果是相同的。left是絕對的左邊,right是絕對的右邊,而start會根據不同的國家改變習慣。

子控件的大小:

1 android:layout_weight ="1"  //權重
2 android:layout_width="match_parent|wrap_content|xdp"
3 android:layout_height="match_parent|wrap_content|xdp"

注意:layout_weight :用來分配當前控件在剩余空間的大小

          當我們是使用layout_weight時,此時控件的寬度不應該再用layout_width來決定,這里指定0dp是一種比較貴規范的寫法。(dp是Android中用於指定控件大小、間距等屬性的單位)

 

(二)RelativeLayout

1.簡介

相對布局相對於線性布局更為隨意,它可以通過相對定位的方式讓空間出現在布局的任何位置。相對布局可以讓子控件相對於兄弟控件或父控件進行布局。

2.屬性

子控件常用布局:

 

 1 //相對於父控件
 2 android:layout_alignParentTop  //空間的頂部與父控件的頂部對齊
 3 androif:layout_alignParentBottom  //控件的底部與父控件的底部對齊
 4 android:layout_alignParentLeft  //控件的左部與父控件左部對齊
 5 android:layout_alignParentRight  //控件的右部與父控件的右部對齊
 6   
 7 //相對給定id控件
 8 android:layout_above  //控件的底部置於給定控件之上 9 android:layout_below  //控件的底部置於給定控件之下
 9 android:layout_toLeftOf //控件的右邊緣於給定控件左邊緣對齊
10 android:layout_toRightOf  //控件的左邊緣於給定控件右邊緣對齊
11 
12 android:layout_alighBaseline  //控件的baseline與給定控件的baseline對齊
13 android:layout_alignTop  //控件的頂部邊緣與給定控件的頂部邊緣對齊
14 android:layout_alignBottom  //控件的底部邊緣與給定控件的底部邊緣對其
15 android:layout_alignLeft  //控件的左邊緣與給定控件的左邊緣對齊
16 android:layout_alignRight  //控件的右邊緣與給定控件的右邊緣對齊
17 
18 //居中
19 android:layout_centerHorizontal  //水平居中
20 android:layout_centerVertical  //垂直居中
21 android:layout_centerparent  //父控件中央
22 
23 //屬性值為具體像素值:dp、px
24 android:layout_marginBottom   //離某元素底邊緣的距離
25 android:layout_marginLeft   //離某元素做邊緣的距離
26 android:layout_marginRight  //離某元素右邊緣的距離
27 android:layout_marginTop  //李某元素上邊緣的距離
28 android:padding
29 android:paddingTop
30 android:paddingLeft
31 android:paddingRight

 

 

 

 

注意:當一個控件去引用另外一個控件的id時,該控件一定要定義在引用控件的后面,不然會出現找不到id的情況

          'align' 排列;‘alignParent’排列在父容器的某個位置

          在最新版本的Android中,單獨使用包含Start或者End屬性的話,會報錯,提示需要再加入Left和Right屬性;而單獨使用Left和Right屬性,會提示一個warning,提示推薦加入Star或者End屬性

          margin 邊緣(外邊距);padding 襯墊,填充(內邊距)

          

 

(三)FrameLayout

1.簡介

最簡單的一種布局,所有的控件都會默認擺放在布局的左上角。后續添加的控件會覆蓋前一個。幀布局的應用場景並不是很多,不過經常配合Fragment使用/

2.屬性

1 android:foreground   //設置改幀布局的前景圖像
2 android:foregroundGravity  //設置前景圖像顯示的位置

 

(四)AbsoluteLayout

1.簡介

絕對布局中將所有的子元素通過android:layout_x和android:layout_y屬性,將子元素的坐標位置固定下來。屏幕左上角為坐標(0,0),橫向往右為正方,縱向往下為正方。

 

(五)TableLayout

1.簡介。

表格布局,適用於多行多列的布局格式,每個TableLayout是由多個TableRow組成,一個TableRow就表示TableLayout中的每一行,這一行可以由多個子元素組成。實際上TableLayout和TableRow都是LineLayout線性布局的子類。但是TableRow的參數android:orientation屬性值固定為horizontal,且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。所以TableRow實際是一個橫向的線性布局,且所以子元素寬度和高度一致。

2.屬性

1 android:shrinkColumns:  //設置可收縮的列,內容過多就收縮顯示到第二行
2 android:stretchColumns:  //設置可伸展的列,將空白區域填充滿整個列
3 android:collapseColumns:  //設置要隱藏的列
4 
5 //子控件常用屬性:
6 android:layout_column://第幾列
7 android:layout_span://占據列數
注意:在TableLayout中,單元格可以為空,但是不能跨列,意思是只能不能有相鄰的單元格為空
     列的索引從0開始,shrinkColumns和stretchColumns可以同時設置。



 

 

 

  

 

 

 

 

 


免責聲明!

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



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