Android中UI涉及的Layout主要有:LinearLayout、RelativeLayout、TableLayout、TabLayout、GridView、Listview這裏的六個爲文檔中提到的佈局方式,除此之外,常用的還有AbsoluteLayout和FrameLayout佈局。
其中這些佈局中需要注意的地方有:
LiearLayout本身是ViewGroup,它可以橫向或者縱向顯示子View,使用Linearlayout時需要特別注意的是對Linearlayout的過度使用,當我們使用多層Linearlayout嵌套時應該考慮用RelativeLayout代替(主要是考慮到多層View加載時的效率低下問題,尤其是當該多層的Linearlayout爲Listview的item時效率更爲低下)
RelativeLayout也是一個ViewGroup,可以用一種相對位置的方式顯示子View,比如在某元素的下邊、左邊,相對元素下邊框對齊、左對齊、居中對齊等等;RelativeLayout對於消除嵌套的ViewGroup方面是有強大的作用,比如可以用RelativeLayout代替多個嵌套的Linearlayout;此外還要注意的是,其中元素之間的相對關係的設置必須爲同級元素,不同級的元素相對位置的設置是沒有作用的,它相對FrameLayout相比元素之間是相對位置的關係不存在層的概念
TableLayout:主要涉及到的標籤有<TableLayout>和<TableRow> TableLayout有點類似與HTML中的<table>標籤,<TableRow>類似<tr>但是不同的是<TableRow>單元中可以放置任意View,如:TextView等
AbsoluteLayout:已過時,主要是因爲它必須指定元素的絕對x/y座標,並且元素沒有頁邊框元素之間可以重疊,實際中應用較少
FrameLayout:主要用來在屏幕上劃分出一塊來顯示某一項,可以給FrameLayout添加多個子View並用gravity來控制它們的顯示位置,子View以stack方式被繪製,總是在最近的子View上方添加,FrameLayout的父元素決定子元素的顯示與否,最大子元素的size決定FrameLayout的size,此佈局用的也較少
Tab Layout:主要用到的組件TabHost和TabWidget,TabHost必須爲這個Layout佈局的root,TabWidget負責顯示tabs而FrameLayout負責顯示TabContent,不同的tabs切換既可以用同一個Activity也可以用不同的Activity
GridView:顯示的爲一個兩維有深度、可滾動的網格,Grid 的每一項將自動按照ListAdapter插入Layout
ListView也是ViewGroup,爲可滾動的list列表,也需要ListAdapter來顯示每一項
具體的小例子可以參考sdk文檔