Android之佈局UI

<!--Android查看API
android 安裝目錄-->sdk目錄-->docs子目錄-->打開index.html(瀏覽器可設置脫機模式:個人使用火狐)-->
Develop-->API Guides(因版本更新,可能略有不同,仔細找找)
-->
>視圖組件與容器組件:
Android大部分UI組件都放在android.widget包及其子包、android.view包及其子包中
Android所有UI組件都繼承了View類,View組件代表了一個空白矩形區域
View類的一個重要子類:
ViewGroup: viewGroup常作爲其他組件的容器使用
Android所有UI組件都建立在View和ViewGroup組件之上,Android採用"組合器"設計模式來設計View和ViewGroup,
ViewGroup也可當做View使用,ViewGroup可以嵌套View和ViewGroup;
>Android 控制界面的三種方式:XML佈局文件、JAVA代碼控制、XML和JAVA代碼混合控制
>自定義View
>UI佈局:
1)佈局管理器:以ViewGroup爲基類
佈局管理器繼承了ViewGroup(同時也繼承了View),其本身就是一個UI組件,佈局管理器之間可以相互嵌套,所有佈局
都可以作爲容器類使用,所以可調用多個重載的addView()向佈局管理器中添加組件;使用佈局管理器可以根據運行平
臺來調整組件的大小,通過使用佈局管理器,Android應用的圖形用戶界面具有良好的平臺無關性
Android六大布局(多爲五大布局)<很多佈局管理器都提供LayoutParams內部類,控制子元素支持指定android:layout_gravity屬性>
a>LinearLayout 線性佈局,可以控制各組件橫向或縱向排列(android:orientation="Horizontal或Vertical"),但不會換行,當組件連續排列到頭之 後,剩下的組件不會被顯示出來.
b>TableLayout 表格佈局,繼承於LinearLayout本質仍然是線性佈局管理器,採用行列的形式管理UI組件.通過添加TableRow或其他UI組件控制 行數和列數.
TableRow也是容器,在TableLayout中添加一個TableRow,這個TableRow就佔一行,然後在TableRow中每次添加其他組件就佔 一列.如果直接向TableLayout中添加其他組件,則這個組件就佔一行.TableLayout中,列寬由該列中最寬的單元格決定,整個佈局 的寬度則取決於父容器的寬度.
可添加的屬性:
android:collapseColumns   setColumnCollapsed(int,boolean) 設置被隱藏列的列序號,多個之間用逗號隔開
android:shrinkColumns     setShrinkAllColumns(boolean)    設置被收縮的列的列序號,多個之間用逗號隔開
android:stretchColumns    setStretchAllColumns(boolean)   設置被拉伸的列的列序號,多個之間用逗號隔開
c>FrameLayout 幀佈局,繼承於ViewGroup,添加的每個子組件都佔據一幀,都會根據gravity屬性自動對齊,而且每個組件都是疊加在一起的.
屬性:
    android:foreground  setForeground(Drawable)  設置該幀佈局容器的前景圖像
android:foregroundGravity setForegroundGravity(int) 定義繪製前景圖像的gravity屬性
例子:可做霓虹燈效果
d>RelativeLayout 相對佈局,其內部的組件位置可設置爲相對於父容器或者兄弟組件.
RelativeLayout.LayoutParams可設置子組件的佈局分佈,而且繼承於android.view.ViewGroup.MarginLayoutParams;
屬性:
android:gravity     setGravity(int)    設置該佈局容器內各子組件的對齊方式
android:ignoreGravity  setIgnoreGravity(int)  設置哪個組件不受gravity屬性的影響
相對於父控件:值=true/false
android:layout_centerInparent 設置子組件位於父容器的中央
android:layout_centerHorizontal 設置子組件位於父容器的水平居中
android:layout_centerVertical 設置子組件位於父容器的垂直居中

android:layout_alignParentTop 設置子組件是否與父容器頂端對齊
android:layout_alignParentBootom 設置子組件是否與父容器底端對齊
android:layout_alignParentLeft 設置子組件是否與父容器左邊對齊
android:layout_alignParentRight 設置子組件是否與父容器右邊對齊
相對於兄弟控件:值=@+id/ID
android:layout_above 設置子組件位於兄弟組件的上方
android:layout_below 設置子組件位於兄弟組件的下方
android:layout_toLeftOf 設置子組件位於兄弟組件的左側
android:layout_toRightOf 設置子組件位於兄弟組件的右側

android:layout_alignTop 設置子組件與兄弟組件的上邊界對齊
android:layout_alignBottom 設置子組件與兄弟組件的下邊界對齊
android:layout_alignLeft 設置子組件與兄弟組件的左邊界對齊
android:layout_alignRight 設置子組件與兄弟組件的右邊界對齊
e>GridLayout 網格佈局,Android4.0新增,網格佈局將容器劃分rows、columns個網格,每個網格可放置一個組件,而且可以設置跨列跨行.
代碼設置:setRowCount(int) setColumnCount(int)
XML屬性設置:
android:alignmentMode  setAlignmentMode(int)  設置佈局管理器的對齊模式
android:columnCount setColumnCount(int)  設置網格列的數量
android:columnOrderPreserved setColumnOrderPreserved(boolean) 設置網格容器是否保留列序號
android:rowCount setRowCount(int)  設置網格行的數量
android:rowOrderPreserved setRowOrderPreserved(boolean)   設置網格容器是否保留行序號
android:useDefaultMargins setUseDefaultMargins(boolean)   設置佈局管理器是否使用默認的頁邊距
內部類:GridLayout.LayoutParams
android:layout_column 設置子組件在GridLayout的第幾列
android:layout_columnSpan 設置子組件在GridLayout橫向上跨幾列
android:layout_row 設置子組件在GridLayout的第幾行
android:layout_rowSpan 設置子組件在GridLayout縱向上跨幾行
android:layout_gravity  setGravity(int)      設置子組件佔據網格空間的方式
f>AbsoluteLayout 絕對佈局,佈局容器不再管理子組件的位置、大小,需自己控制,<已過時>
android:layout_x 指定子組件的x座標
android:layout_y 指定子組件的y座標






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章