闡述谷歌Android Frame Layout發(fā)展史
隨著時(shí)代的進(jìn)步科技的發(fā)展FrameLayout也快速的提升與升級(jí),下面我就對(duì)升級(jí)前和升級(jí)后的FrameLayout,做一下自己的解析,在相關(guān)論壇上找了一些相關(guān)的解決辦法,分享一下,供大家相互學(xué)習(xí)交流。
FrameLayout是最簡(jiǎn)單的一個(gè)布局對(duì)象。它被定制為你屏幕上的一個(gè)空白備用區(qū)域,之后你可以在其中填充一個(gè)單一對(duì)象 — 比如,一張你要發(fā)布的圖片。所有的子元素將會(huì)固定 在屏幕的左上角;
你不能為FrameLayout中的一個(gè)子元素指定一個(gè)位置。后一個(gè)子元素將會(huì)直接在前一個(gè)子元素之上進(jìn)行覆蓋填充,把它們部份或全部擋 ?。ǔ呛笠粋€(gè)子元素是透明的)。LinearLayout以 你為它設(shè)置的垂直或水平的屬性值,來(lái)排列所有的子元素。
所有的子元素都被堆放在其它元素之后,因此一個(gè)垂直列表的每一行只會(huì)有一個(gè)元素。而不管他們有多 寬,而一個(gè)水平列表將會(huì)只有一個(gè)行高(高度為最高子元素的高度加上邊框高度)。LinearLayout保持子元素之間的間隔以及互相對(duì)齊(相對(duì)一個(gè)元素 的右對(duì)齊、中間對(duì)齊或者左對(duì)齊)。
LinearLayout還 支持為單獨(dú)的子元素指定weight。好處就是允許子元素可以填充屏幕上的剩余空間。這也避免了在一個(gè)大屏幕中,一串小對(duì)象擠成一堆的情況。而是允許他們 放大填充空白。子元素指定一個(gè)weight值,剩余的空間就會(huì)按這些子元素指定的weight比例分配給這些子元素。
默認(rèn)的weight值為0。例如,如 果有三個(gè)文本框,其中兩個(gè)指定了weight值為1,那么,這兩個(gè)文本框?qū)⒌缺壤胤糯?,并填滿剩余的空間,而第三個(gè)文本框不會(huì)放大。下面的兩個(gè)窗體采用LinearLayout,包含一組的元素:一個(gè)按鈕,幾個(gè)標(biāo)簽,幾個(gè)文本框。兩個(gè)窗體都為布局做了一番修飾。
文本框的width被設(shè)置 為FILL_PARENT;其它元素的width被設(shè)置為WRAP_CONTENT。默認(rèn)的對(duì)齊方式為左對(duì)齊。左邊的窗體沒(méi)有設(shè)置weight(默認(rèn)為 0);右邊的窗體的comments文本框weight被設(shè)置為1。如果Name文本框也被設(shè)置為1,那么Name和Comments這兩個(gè)文本框?qū)?huì)有 同樣的高度。
在一個(gè)水平排列的FrameLayout中,各項(xiàng)按他們的文本基線進(jìn)行排列(第一列第一行的元素,即最上或最左,被設(shè)定為參考基線)。因此,人們?cè)谝粋€(gè)窗 體中檢索元素時(shí),就不需要七上八下地讀元素的文本了。我們可以在layout的XML中設(shè)置 android:baselineAligned="false",來(lái)關(guān)閉這個(gè)設(shè)置。
TableLayout將子元素的位置分配到行或列中。android的 一個(gè)TableLayout由許多的TableRow組成,每個(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中的不一樣。下圖顯示了一個(gè)TableLayout,圖 中的虛線代表不可視的單元格邊框。