Android布局是應(yīng)用界面開發(fā)的重要一環(huán),在Android中,共有五種布局方式,分別是:LinearLayout (線性布局),F(xiàn)rameLayout(框架布局),AbsoluteLayout(絕對(duì)布局),RelativeLayout(相對(duì)布局),TableLayout(表格布局)。
在windows下有預(yù)覽功能,可以在xml中查看布局的樣式,在linux中無。
一、LinearLayout
? ? ? 線性布局,這個(gè)東西,從外框上可以理解為一個(gè)div,他首先是一個(gè)一個(gè)從上往下羅列在屏幕上。每一個(gè)LinearLayout里面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。當(dāng)垂直布局時(shí),每一行就只有一個(gè)元素,多個(gè)元素依次垂直往下;水平布局時(shí),只有一行,每一個(gè)元素依次向右排列。
? linearLayout中有一個(gè)重要的屬性 android:layout_weight="1",這個(gè)weight在垂直布局時(shí),代表行距;水平的時(shí)候代表列寬;weight值越大就越大。
線形布局中預(yù)覽和真機(jī)中完全一樣。
TextView占一定的空間,沒有賦值也有一定的寬高,要特別注意。
二、FrameLayout
? ? ? FrameLayout是最簡(jiǎn)單的一個(gè)布局對(duì)象。它被定制為你屏幕上的一個(gè)空白備用區(qū)域,之后你可以在其中填充一個(gè)單一對(duì)象 — 比如,一張你要發(fā)布的圖片。所有的子元素將會(huì)固定在屏幕的左上角;你不能為FrameLayout中的一個(gè)子元素指定一個(gè)位置。后一個(gè)子元素將會(huì)直接在前一個(gè)子元素之上進(jìn)行覆蓋填充,把它們部份或全部擋?。ǔ呛笠粋€(gè)子元素是透明的)。? ?
三、AbsoluteLayout
AbsoluteLayout 這個(gè)布局方式很簡(jiǎn)單,主要屬性就兩個(gè) layout_x 和 layout_y 分別定義 這個(gè)組件的絕對(duì)位置。 即,以屏幕左上角為(0,0)的坐標(biāo)軸的x,y值,當(dāng)向下或向右移動(dòng)時(shí),坐標(biāo)值將變大。AbsoluteLayout 沒有頁邊框,允許元素之間互相重疊(盡管不推薦)。我們通常不推薦使用 AbsoluteLayout ,除非你有正當(dāng)理由要使用它,因?yàn)樗菇缑娲a太過剛性,以至于在不同的設(shè)備上可能不能很好地工作。
四、RelativeLayout
? ? 相對(duì)布局可以理解為某一個(gè)元素為參照物,來定位的布局方式。
? ? ? ? ? ? ? ? android:layout_方向 = id? 表示 在這個(gè)id對(duì)應(yīng)的控件的方向上(上|下)
? ? ? ? ? ? ? ? android:layout_align方向? = id 表示和這個(gè)控件的(上下左右)對(duì)齊
? ? ? ? ? ? ? ? android: layout_to方向Of? = id 表示在這個(gè)控件的 左或者右
eg:
? ? ? ? ? ? ? ? android:layout_below="@id/la1"/>
? ? ? ? ? ? ? ? 將當(dāng)前控件放置于id為la1 的控件下方。
? ? ? ? ? ? ? ? ? ? ? ? android:layout_alignParentRight="true"
? ? ? ? ? ? ? ? 使當(dāng)前控件的右端和父控件的右端對(duì)齊。這里屬性值只能為true或false,默認(rèn)false。
? ? ? ? ? ? ? ? android:layout_marginLeft="10dip"
? ? ? ? ? ? ? ? 使當(dāng)前控件左邊空出相應(yīng)的空間。
? ? ? ? ? ? ? ? ? ? ? ? android:layout_toLeftOf="@id/true"
? ? ? ? ? ? ? ? 使當(dāng)前控件置于id為true的控件的左邊。
? ? ? ? ? ? ? ? ? ? ? ? android:layout_alignTop="@id/ok"
? ? ? ? ? ? ? ? 使當(dāng)前控件與id為ok的控件上端對(duì)齊。
? ? ? ? 五、TableLayout
? ? ? 表格布局類似Html里面的Table。每一個(gè)TableLayout里面有表格行TableRow,TableRow里面可以具體定義每一個(gè)元素。每個(gè)TableRow 都會(huì)定義一個(gè) row (事實(shí)上,你可以定義其它的子對(duì)象,這在下面會(huì)解釋到)。TableLayout 容器不會(huì)顯示row 、cloumns 或cell 的邊框線。每個(gè) row 擁有0個(gè)或多個(gè)的cell ;每個(gè)cell 擁有一個(gè)View 對(duì)象。表格由列和行組成許多的單元格。表格允許單元格為空。單元格不能跨列,這與HTML 中的不一樣。