Android六大布局
Android開發佈局:.xml 頁面排版
佈局由佈局管理器(佈局樣式)+元件組成
佈局管理器(佈局樣式):控制組件的擺放規則,他分為幾種,其中最常見的有5種:
1.線性佈局(LinearLayout)
LinearLayout是線性不佈局控制元件,它包含的子控制元件將以橫向或者豎向的方式排列
android:orientation = “vertical”
— 該屬性決定他子類控制元件的排布方式(vertical:垂直;horizontal: 水平)
android:gravity = “center”
— 該屬性決定他子類xy的位置
android:layout_gravity 表示元件自身在父元件中的位置
android:gravity 表示元件的子元件在元件中的位置
特點是自己裡面的元件可以設定兩種排列方式:水平Horizontal+垂直Vertical,寫這個佈局的時候除了寫width,height之外,必須寫上orientation就是排列的方向。
2.相對佈局(RelativeLayout)
RelativeLayout是相對佈局控制元件,它包含的子控制元件將以控制元件之間的相對位置或者子類控制元件相對父容器的位置的
方式排列
android:layout_alignParentLeft = “true” 子類控制元件相對當前父類容器靠左邊
android:layout_marginTop = “41dp” 子類控制元件相對父類容器上邊的距離
android:layout_centerInParent = “true”子類控制元件相對於父類容器即水平居中又垂直居中
android:layout_centerHorizontal = “true” 子類控制元件相對於父類容器水平居中
android:layout_centerVertical = “true” 子類控制元件相對於父類容器垂直居中
android:layout_toRightOf=”@+id/1” 該控制元件位於控制元件1右側
android:layout_alignBottom=”@+id/1” 該控制元件底部對齊於控制元件1
特點是自己裡面的元件是按照相對位置排列,他有相對於誰,位於誰上下左右排列,而且還有相對於父容器水平居中,垂直居中,水平垂直居中,相對於父容器左對齊,右對齊,頂部對齊,底部對齊,等屬性。
相對佈局如果不給其中的元件設定位置,那麼元件就會預設在父容器的左上角一層一層覆蓋。這點類似於幀佈局。
3.表格佈局(TableLayout)
TableLayout 表格佈局模型以行列的形式管理子控制元件,每一行為一個TableRow的物件,當然也可以是一個View的物件。
①如果我們直接往TableLayout中新增元件的話,那麼這個元件將佔滿一行!!!
②如果我們想一行上有多個元件的話,就要新增一個TableRow的容器,把元件都丟到裡面!
注意一列能同時表示收縮和拉伸,可以通過”*”代替收縮或拉伸所有列,以上這三個屬性的列號都是從0開始算的
android:collapseColumns = “1,2”隱藏從0開始的索引列。列之間必須用逗號隔開:1,2,5
android:shrinkColumns=”1,2” 收縮從0開始的索引列。當可收縮的列太寬()內容過多不會別擠出螢幕,
android:stretchColumns = “1,2”拉伸從0開始的索引。以填滿剩下的多餘空白空間。列之間必須用逗號隔開。
對於內的控制元件而言
android:layout_column = “1” 表示該控制元件顯示在第2列
android:layout_span = “2” 表示該控制元件佔據2列
他是配合tableraw來使用 ,一行一行的,tableraw裡面有一些控制表格長度的屬性。
4.網格佈局(GridLayout)
該佈局是Android 4.0 後新增的一個佈局,以網格的形式佈局視窗控制元件
這裡要說一點,網格佈局和其他佈局不同,可以不為元件設定Layout_width和Layout_height屬性
因為元件的寬高由幾行幾列決定了,當然,你也可以寫個wrap_content
常用屬性:
排列對齊:
①設定元件的排列方式: android:orientation=”” vertical(豎直,預設)或者horizontal(水平)
②設定元件的對齊方式: android:layout_gravity=”” center,left,right,buttom啊,這些,如果想同時用兩種的話:eg: buttom|left
設定佈局為幾行幾列:
①設定有多少行:android:rowCount=”4” //設定網格佈局有4行
②設定有多少列:android:columnCount=”4” //設定網格佈局有4列
設定某個元件位於幾行幾列
注:都是從0開始算的哦!
①元件在第幾行:android:layout_row = “1” //設定元件位於第二行
②元件在第幾列:android:layout_column = “2” //設定該元件位於第三列
設定某個元件橫跨幾行幾列:
①橫跨幾行:android:layout_rowSpan = “2” //縱向橫跨2行
②橫跨幾列:android:layout_columnSpan = “3” //橫向橫跨2列
類似表格也是格式比較固定的表格,已經棄用。
5.幀佈局(FrameLayout)
在這個佈局中, 所有的元素都不能別指定放置的位置,他們統統放於這塊區域的左上角,並且後面的子元素直接覆蓋在前面的子元素上,
將前面的子元素部分和全部遮擋。
FrameLayout的屬性很少就兩個,但是在說之前我們先介紹一個東西:
前景影象:永遠處於幀佈局最上面,直接面對使用者的影象,就是不會被覆蓋的圖片。
兩個屬性:
android:foreground:*設定改幀佈局容器的前景影象
android:foregroundGravity:設定前景影象顯示的位置
幀佈局如果不給其中的元件設定位置,那麼元件就會預設在父容器的左上角一層一層覆蓋。幀佈局只能用重心gravity來控制自己的位置,擁有的方法比相對佈局少很多,通常只用於一層一層的佈局。
6.絕對佈局(AbsoluteLayout)
該佈局又可以叫做座標佈局,可以直接指定子元素的絕對位置(x,y)
但是由於手機螢幕尺寸差別較大,使用絕對定位的適應性會比較差,在螢幕的適配上有缺陷
android:layout_x = “32dip” 控制當前子類控制元件的x位置
android:layout_y = “32dip” 控制當前子類控制元件的y位置
可以設定元件的固定座標,也就是x,y座標,現在已經棄用。