Android用戶(hù)界面詳解
EditTexts
TextFields
Buttons
Buttons
Android和Swing的監聽(tīng)者設置也幾乎一樣:
3.2.2 通用布局對象
下面為在你的應用中為最普遍的view groups。這里介紹每種類(lèi)型的一些基本信息;更深入的細節,請看每章前面的鏈接參考頁(yè)。
FrameLayout
FrameLayout是最簡(jiǎn)單的一個(gè)布局對象。它被定制為你屏幕上的一個(gè)空白備用區域,之后你可以在其中填充一個(gè)單一對象 — 比如,一張你要發(fā)布的圖片。所有的子元素將會(huì )固定在屏幕的左上角;你不能為FrameLayout中的一個(gè)子元素指定一個(gè)位置。后一個(gè)子元素將會(huì )直接在前一個(gè)子元素之上進(jìn)行覆蓋填充,把它們部份或全部擋住(除非后一個(gè)子元素是透明的)。
LinearLayout
LinearLayout以你為它設置的垂直或水平的屬性值,來(lái)排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一個(gè)垂直列表的每一行只會(huì )有一個(gè)元素,而不管他們有多寬,而一個(gè)水平列表將會(huì )只有一個(gè)行高(高度為最高子元素的高度加上邊框高度)。LinearLayout保持子元素之間的間隔以及互相對齊(相對一個(gè)元素的右對齊、中間對齊或者左對齊)。
LinearLayout還支持為單獨的子元素指定weight。好處就是允許子元素可以填充屏幕上的剩余空間。這也避免了在一個(gè)大屏幕中,一串小對象擠成一堆的情況,而是允許他們放大填充空白。子元素指定一個(gè)weight值,剩余的空間就會(huì )按這些子元素指定的weight比例分配給這些子元素。默認的weight值為0。例如,如果有三個(gè)文本框,其中兩個(gè)指定了weight值為1,那么,這兩個(gè)文本框將等比例地放大,并填滿(mǎn)剩余的空間,而第三個(gè)文本框不會(huì )放大。
下面的兩個(gè)窗體采用LinearLayout,包含一組的元素:一個(gè)按鈕,幾個(gè)標簽,幾個(gè)文本框。兩個(gè)窗體都為布局做了一番修飾。文本框的width被設置為FILL_PARENT;其它元素的width被設置為WRAP_CONTENT。默認的對齊方式為左對齊。左邊的窗體沒(méi)有設置weight(默認為0);右邊的窗體的comments文本框weight被設置為1。如果Name文本框也被設置為1,那么Name和Comments這兩個(gè)文本框將會(huì )有同樣的高度。

在一個(gè)水平排列的LinearLayout中,各項按他們的文本基線(xiàn)進(jìn)行排列(第一列第一行的元素,即最上或最左,被設定為參考基線(xiàn))。因此,人們在一個(gè)窗體中檢索元素時(shí),就不需要七上八下地讀元素的文本了。我們可以在layout的XML中設置android:baselineAligned=false,來(lái)關(guān)閉這個(gè)設置。
評論