線(xiàn)性布局是Android界面布局中簡(jiǎn)單的布局之一,它提供了控件水平或者垂直排列的模型。如圖-1所示,線(xiàn)性布局中,所有的子元素如果垂直排列,則每行僅包含一個(gè)界面元素;如果水平排列,則每列僅包含一個(gè)界面元素。


圖-1 線(xiàn)性布局(LinearLayout)效果圖
同時(shí),使用此布局時(shí)可以通過(guò)設(shè)置控件的Weight 參數(shù)控制各個(gè)控件在容器中的相對(duì)大小。LinearLayout 布局的屬性既可以在布局文件(XML)中設(shè)置,也可以通過(guò)成員方法進(jìn)行設(shè)置。表1-1給出了LinearLayout 常用的屬性及這些屬性的對(duì)應(yīng)設(shè)置方法。
表1-1 LinearLayout 常用屬性及對(duì)應(yīng)方法
屬性名稱(chēng) |
對(duì)應(yīng)方法 |
描述 |
android:orientation |
setOrientation(int) |
設(shè)置線(xiàn)性布局的朝向,可取horizontal |
android:gravity |
setGravity(int) |
設(shè)置線(xiàn)性布局的內(nèi)部元素的布局方式 |
在線(xiàn)性布局中可使用gravity 屬性來(lái)設(shè)置控件的對(duì)齊方式,gravity 可取的值及說(shuō)明如表1-2所示。
提示:當(dāng)需要為gravity 設(shè)置多個(gè)值時(shí),用“|”分隔即可。
表1-2 gravity 可取的屬性及說(shuō)明
屬性 |
說(shuō)明 |
top |
不改變控件大小,對(duì)齊到容器頂部 |
bottom |
不改變控件大小,對(duì)齊到容器底部 |
left |
不改變控件大小,對(duì)齊到容器左側(cè) |
right |
不改變控件大小,對(duì)齊到容器右側(cè) |
center_vertical |
不改變控件大小,對(duì)齊到容器縱向中央位置 |
center-horizontal |
不改變控件大小,對(duì)齊到容器橫向中央位置 |
center |
不改變控件大小,對(duì)齊到容器中央位置 |
fill_vertical |
若有可能,縱向拉伸以填滿(mǎn)容器 |
fill_horizontal |
若有可能,橫向拉伸以填滿(mǎn)容器 |
fill |
若有可能,縱向橫向同時(shí)拉伸以填滿(mǎn)容器 |
以下用一個(gè)線(xiàn)性布局的例子來(lái)加深對(duì)線(xiàn)性布局的理解。
1.創(chuàng)建一個(gè)名為L(zhǎng)inearLayout的Android工程
包名稱(chēng)是edu.hrbeu.LinearLayout,Activity名稱(chēng)為L(zhǎng)inearLayout。為了能夠完整體驗(yàn)創(chuàng)建線(xiàn)性布局的過(guò)程,我們需要?jiǎng)h除Eclipse自動(dòng)建立的/res/layout/main.xml文件,之后我們將手動(dòng)創(chuàng)建一個(gè)XML布局文件。
2.建立XML線(xiàn)性布局文件
首先,刪除Eclipse自動(dòng)建立的/res/layout/main.xml文件;其次,建立用于顯示垂直排列線(xiàn)性布局的XML文件:右擊/res/layout文件夾,選擇“New”→“File”命令打開(kāi)新文件建立向?qū),文件名為main_vertical.xml,保存位置為L(zhǎng)inearLayout/res/layout,如圖-2所示。

圖-2 新建線(xiàn)性布局XML文件
3.編輯XML線(xiàn)性布局文件
打開(kāi)XML文件編輯器,對(duì)main_vertical.xml文件的代碼做如代碼清單5-1所示的修改。
代碼清單1-1 main_vertical.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
第2行代碼是聲明XML文件的根元素為線(xiàn)性布局;第4、5、6行代碼是在屬性編輯器中修改過(guò)的寬度、高度和排列方式的屬性。同樣地,用戶(hù)可以在可視化編輯器和屬性編輯器中對(duì)頁(yè)面布局進(jìn)行修改,這些修改會(huì)同步地反映在XML文件中。
4.添加控件
將四個(gè)界面控件TextView、EditText、Button、Button先后拖曳到可視化編輯器中,所有控件都自動(dòng)獲取控件名稱(chēng),并把該名稱(chēng)顯示在控件上,如TextView01、EditText01、Button01和Button02。

圖-3 線(xiàn)性布局添加控件
修改界面控件的屬性如表1-3所示。
表1-3 線(xiàn)性布局控件屬性
編號(hào) |
類(lèi)型 |
屬性 |
值 |
1 |
TextView |
|
|
2 |
EditText |
|
|
3 |
Button |
|
|
4 |
Button |
|
|
打開(kāi)XML文件編輯器查看main_vertical.xml文件代碼,發(fā)現(xiàn)在屬性編輯器內(nèi)填入的文字已經(jīng)正常寫(xiě)入XML文件中,如代碼清單5-2中第11、20、25行代碼。
代碼清單1-2 main_vertical.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/label"
android:layout_width="wrap_content"
android:android:layout_height="wrap_content"
android:android:text="用戶(hù)名: " >
</TextView>
<EditText android:id="@+id/entry"
android:layout_height="wrap_content"
android:layout_width="match_parent">
</EditText>
<Button android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="確認(rèn)">
</Button>
<Button android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消" >
</Button>
</LinearLayout>
5.修改LinearLayout.java文件
將LinearLayout.java文件中的setContentView(R.layout.main),更改為setContentView
(R.layout.main_vertical)。
同理,按照以上步驟,可以得到橫向線(xiàn)性布局。
·建立main_ horizontal.xml文件。
·線(xiàn)性布局的Orientation屬性的值設(shè)置為horizontal。
·將EditText的Layout width 屬性的值設(shè)置為wrap_content。
·將LinearLayout.java文件中的setContentView(R.layout.main_vertical)修改為setContentView(R.layout.main_ horizontal)。