Android頁面布局
1.Android頁面布局一共分為6種:
LinearLayout(線性布局)、RelativeLayout(相對布局)、TableLayout(表格布局)、FrameLayout(幀布局)、GridLayout(網格布局)、AbsoluteLayout(絕對布局)
常用的為:線性布局和相對布局
2.布局的特點
FrameLayout幀布局
- 布局特點:放入其中的所有元素都被放置在最左上的區域,而且無法為這些元素指定一個確切的位置,下一個子元素會重疊覆蓋上一個子元素
- 應用場景:適合瀏覽單張圖片。
LinearLayout線性布局
- 布局特點:放主要提供控件水平或者垂直排列的模型,每個子組件
都是以垂直或水平的方式來線性排布.(默認是垂直) - 應用場景:最常用的布局方式
linearLayout中有一個重要的屬性 android:layout_weight=”1”,這個weight在垂直布局時,代表行距;水平的時候代表列寬;weight值越大就越大。
AbsoluteLayout絕對定位布局
- 布局特點:采用坐標軸的方式定位組件,左上角是(0,0)點,往右x軸遞增,往下Y軸遞增,組件定位屬性為android:layout_x和 android:layout_y來確定坐標。
- 應用場景:准確定位空間位置
由於Android手機的屏幕尺寸、分辨率存在較大差異,使用AbsoluteLayout無法兼顧適配問題,所以該布局已經過時
RelativeLayout相對布局
- 布局特點:為某一個組件為參照物,來定位下一個組件的位置的布局方式。
- 應用場景:控件之間存在相應關系(適配神器,推薦使用)
TableLayout表格布局
- 布局特點:類似Html里的Table.使用TableRow來布局,其中TableRow代表一行,TableRow的每一個視圖組件代表一個單元格。
- 應用場景:控件之間存在相應關系。
這五個布局元素可以相互嵌套應用,做出美觀的界面。
3.布局的常用屬性
- layout_width & layout_height { xxxpd,wrap_content,match_parent,}
- layout_margin+方位 & padding+方位
- layout_gravity & gravity
wrap_content:相應視圖的寬和高就會被設定成所需的最小尺寸以適應視圖中的內容
match_parent:視圖的寬和高延伸至充滿整個父布局
margin和padding區別:margin外邊距,padding內邊距和html用法一樣
layout_gravity 和 gravity:用來確定View在Layout中的停靠位置
layout_gravity 和 gravity區別:
gravity屬性:是對該view 內容的位置的設置。 比如一個button 上面的text. 你可以設置該text 在view的靠左,靠右等位置
layout_gravity 屬性:是用來設置該view相對與父view 的位置。 比如一個button 在Linearlayout里,你可以通過設置該屬性把該button放在父布局Linearlayout靠左靠右等位置。
====================================================================================================================================
LinearLayout
orientation:vertical(垂直排列)/horizontal(水平排列)
layout_weight :是線性布局(Linelayout)的一個獨特比例分配屬性。使用此屬性設置權重,然后按照比例對界面進行空間的分配,公式計算是:控件寬度=控件設置寬度+剩余空間所占百分比寬幅
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重合 |
上述所有屬性的取值皆為給定控件的id名,如下例子
//文本控件@+id/tab_textview在控件@+id/tab_imageview的下方 <TextView android:id="@+id/tab_textview" android:layout_below="@+id/tab_imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" />