Android 界面布局
種類:
LinearLayout(線性布局)
TableLayout(表格布局)FrameLayout(框架布局)
RalativeLayout(相對布局)
AbsoluteLayout(絕對布局)
GridLayout(網格布局)
布局文件中常用的屬性:
LinearLayout(線性布局):
在線性布局中,所有的子元素都在垂直或水平方向按照順序在界面上排列,如果垂直排列,則每行僅包括一個界面元素;同樣,如果水平排列,則每列僅包含一個界面元素。
orientation 設置linearlayout的排列方式(垂直排列和水平排列)
android:id 為控件指定一個id
android:layout_width 設置該控件的寬度
android:layout_height 設置該控件的高度
android:background 為該控件設置背景(可使用圖片,也可用顏色)
android:gravity 設置控件中內容的位置
layout_gravity 設置該控件在父控件中的位置
layout_margin 設置控件的外邊距
padding 設置控件的內邊距
android:text 為指定控件設置文字,使其顯示在該控件中
android:textSize 設置該控件中文字的大小
RalativeLayout(相對布局):
相對布局是一種非常靈活的布局方式。能夠通過指定界面元素與其他元素的相對位置關系,確定界面中所有元素的布局位置。
第一類 : 屬性值為 true 或 false
android:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相對于父元素完全居中android:layout_alignParentBottom 貼緊父元素的下邊緣android:layout_alignParentLeft 貼緊父元素的左邊緣android:layout_alignParentRight 貼緊父元素的右邊緣
android:layout_alignParentTop 貼緊父元素的上邊緣
android:layout_alignWithParentIfMissing 若找不到兄弟元素以父元素做參照物
第二類:屬性值必須為 id 的引用名“ @id/id-name ”
第三類:屬性值為具體的像素值,如 30dip , 40pxandroid:layout_below 在某元素的下方
android:layout_above 在某元素的上方
android:layout_toLeftOf 在某元素的左邊
android:layout_toRightOf 在某元素的右邊
android:layout_alignTop 本元素的上邊緣和某元素的的上邊緣對齊
android:layout_alignLeft 本元素的左邊緣和某元素的的左邊緣對齊
android:layout_alignBottom 本元素的下邊緣和某元素的的下邊緣對齊
android:layout_alignRight 本元素的右邊緣和某元素的的右邊緣對齊
android:layout_marginBottom 離某元素底邊緣的距離
android:layout_marginLeft 離某元素左邊緣的距離
android:layout_marginRight 離某元素右邊緣的距離
android:layout_marginTop 離某元素上邊緣的距離
TableLayout(表格布局):(這個要和TableRow配合使用,很像html里面的table)
這個表格布局不像HTML中的表格那樣靈活,只能通過 TableRow 屬性來控制它的行而列的話里面有幾個控件就是幾列(一般情況)。 如:表示兩行兩列的一個表格。
<TableLayout>
<TableRow>
<EditText></EditText>
<EditText></EditText>
</TableRow>
<TableRow>
<EditText></EditText>
<EditText></EditText>
</TableRow>
</TableLayout>
android:gravity="center" 書面解釋是權重比。其時就是讓它居中顯示。
android:stretchColumns="1,2,3,4" 它的意思就是自動拉伸1,2,3,4列。
它還可以動態添加里面的每行每列。如下代碼所示:
/*根據id查找表格對象*/
TableLayout tableLayout = (TableLayout) findViewById(R.id.table01);
/*創建列對象*/
TableRow tableRow = new TableRow(this);
/*文本框對象*/
TextView temp = new TextView(this);
temp.setText("text的值");
/*將此文本添加到列中*/
tableRow.addView(temp);
FrameLayout(框架布局):
里面可以放多個控件,不過控件的位置都是相對位置,在它里面的控件都是按后面的一個控件疊加在前一個控件上來顯示的,所有元素都被放置在最左上角。
GridLayout(網格布局):
網格布局是AndroidSDK4.0新支持的布局方式,將用戶界面劃分為網格,界面元素可隨意擺放在這些網中。網格布局比表格布局在界面設計上更加靈活,在網格布局中,界面元素可占用多個網格,這是表格布局無法實現的。
useDefaultMargins 如果值為真,則布局中的各個元素間都會留有一定的邊界空間
columnCount 設置界面被分割的列的數量
rowCount 設置界面被分割的行的數量
layout_column 設置該控件位于網格中第幾列
layout_row 設置該控件位于網格中第幾行
layout_columnSpan設置該控件在網格中列的跨度
layout_rowSpan 設置該控件在網格中行的跨度
AbsoluteLayout(絕對布局):
又可以叫做坐標布局,可以直接指定子元素的絕對位置這種布局簡單直接,直觀性強使用android:layout_x屬性來確定X坐標,以左上角為頂點。使用android:layout_y屬性確定Y坐標,以左上角為頂點。如果子元素不設置layout_x和layout_y,那么它們的默認值是0,會出現在左上角。由于手機屏幕尺寸差別比較大,使用絕對定位的適應性會比較差,不推薦使用.
總結:(LinearLayout 和 RelativeLayout 應該又是其中用的較多的兩種。AbsoluteLayout 比較少用,因為它是按屏幕的絕對位置來布局的如果屏幕大小發生改變的話控件的位置也發生了改變。這個就相當于HTML中的絕對布局一樣,一般不推薦使用 )
注意事項:
1 、各布局不要亂用各自的屬性。比如把屬于 AbsoluteLayout 布局的android:layout_x和android:layout_y用到 LinearLayout 布局或 RelativeLayout 布局,或者把 RelativeLayout 布局的 below , rightof 等屬性應用到其他布局中。這樣做雖然不會報錯,但這是白浪費感情的工作,根本達不到我們需要的效果。
2 、關于android:layout_width="fill_parent" 和 android:layout_height="wrap_content" ,這是對每個布局寬和高的設置。 wrap_content 可表示隨著其中控件的不同而改變這個布局的寬度或高度,類似于自動設置寬和高, fill_parent使布局填充整個屏幕,另外還有一種 match_parent ,它本質上和 fill_parent 一樣,并從 API Level8 開始替代fill_parent 。