<該文章參考各大博客以及書籍總結而來,如有問題歡迎指出^ ^>
一、五大傳統布局+新布局
- 線性布局——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可以同時設置。