Android 界面布局

jopen 10年前發布 | 35K 次閱讀 Android 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 ”

android:layout_below                          在某元素的下方

android:layout_above                          在某元素的上方

android:layout_toLeftOf                       在某元素的左邊

android:layout_toRightOf                     在某元素的右邊

android:layout_alignTop            本元素的上邊緣和某元素的的上邊緣對齊

android:layout_alignLeft           本元素的左邊緣和某元素的的左邊緣對齊

android:layout_alignBottom         本元素的下邊緣和某元素的的下邊緣對齊

android:layout_alignRight          本元素的右邊緣和某元素的的右邊緣對齊


第三類:屬性值為具體的像素值,如 30dip , 40px

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 。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!