<該文章參考各大博客以及書籍總結而來,如有問題歡迎指出^ ^> 一、五大傳統佈局+新佈局 線性佈局——LinearLayout 相對佈局——RelativeLayout 幀佈局——FrameLayout 絕對佈局——AbsoluteLayout 表格佈局——TableLayout 約束佈局——Con ...
<該文章參考各大博客以及書籍總結而來,如有問題歡迎指出^ ^>
一、五大傳統佈局+新佈局
- 線性佈局——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屬性,會提示一個waring,提示推薦加入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可以同時設置。