本文介紹 Android 界面開(kāi)發(fā)中最基本的四種布局LinearLayout、RelativeLayout、FrameLayout、TableLayout 的使用方法及這四種布局中常用的屬性。
四種布局示例
1.LinearLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="150dp" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="垂直1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="垂直2" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="100dp" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="水平1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="水平2" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="150dp" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" android:text="水平上對(duì)齊" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="水平垂直居中" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:text="水平下對(duì)齊" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="100dp" android:orientation="horizontal"> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:hint="請(qǐng)輸入..."/> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:text="提交" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="100dp" android:orientation="horizontal"> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="請(qǐng)輸入..."/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交" /> </LinearLayout></LinearLayout>
orientation:horizontal(水平)/vertical(垂直),表示線性排列的方向。
layout_width/layout_height:元素的寬度與高度
layout_gravity:top/bottom/center/left/right/etc,表示當(dāng)前元素相對(duì)父元素的對(duì)齊方式,多種對(duì)齊方式用“|”隔開(kāi),右上對(duì)齊:top|right。
layout_weight:占據(jù)空間的比例,例如元素A和B,A設(shè)置為1,B設(shè)置為3, 元素A、B分別占空間的1/4、3/4,此時(shí)元素寬度不由layout_width決定,設(shè)置為0dp是比較規(guī)范的寫(xiě)法。
layout_weight 若元素A設(shè)置為1,元素B不設(shè)置,將layout_width設(shè)置為具體的值或wrap_content,那么元素B的寬度由layout_width決定,元素A將占滿屏幕剩下的空間。
2.RelativeLayout
<LinearLayout ...> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="300dp"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" android:text="我在左下"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="我在中間"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:text="我在右上"/> </RelativeLayout> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="300dp"> <Button android:id="@+id/button_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="參照按鈕"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/button_2" android:layout_toRightOf="@id/button_2" android:text="我在右上"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/button_2" android:layout_toLeftOf="@id/button_2" android:text="我在左下"/> </RelativeLayout></LinearLayout>
以下屬性值為true/false
layout_centerHorizontal/layout_centerVertical: 水平居中、垂直居中
layout_centerInparent: 相對(duì)父元素垂直&水平居中
layout_alignParentBottom: 元素下邊界和父元素下邊界對(duì)齊
layout_alignParentLeft: 左邊界對(duì)齊
layout_alignParentRight: 右邊界對(duì)齊
layout_alignParentTop: 上邊界對(duì)齊
以下屬性值為控件id
layout_above/layout_below: 在某元素的上方/下方
layout_toLeftOf/layout_toRightOf: 在某元素的左方/右方
layout_alignTop/layout_alignBottom: 元素上(下)邊界與某元素上(下)邊界對(duì)齊
layout_alignLeft/layout_alignRight: 左(右)邊界對(duì)齊
3.FrameLayout
所有元素都放置在布局的左上角
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是一個(gè)按鈕"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是一個(gè)輸入框"/></FrameLayout>
4.TableLayout
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TableRow> <TextView android:layout_height="wrap_content" android:text="郵箱"/> <EditText android:layout_height="wrap_content" android:inputType="textEmailAddress" android:hint="請(qǐng)輸入您的郵箱" /> </TableRow> <TableRow> <TextView android:layout_height="wrap_content" android:text="密碼"/> <EditText android:layout_height="wrap_content" android:inputType="textPassword" android:hint="請(qǐng)輸入密碼" /> </TableRow> <TableRow> <Button android:layout_height="wrap_content" android:layout_span="2" android:text="注冊(cè)" /> </TableRow></TableLayout>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="1"> ...</TableLayout>
TableRow: 代表表格布局的一行,行內(nèi)一個(gè)元素代表一列。
layout_span: 合并單元格,設(shè)置為2,代表該元素占據(jù)2列空間。
stretchColumns: TableRow中無(wú)法指定空間寬度,那么需要用到該屬性,設(shè)置為1,表示拉伸第2列(0為第1列)與屏幕一樣寬,效果如TableLayout的第二張圖。
5.自定義布局
Android中,布局下可以放置控件,也可以放置子布局。如果子布局內(nèi)容較為獨(dú)立且經(jīng)常使用,例如標(biāo)題欄,或者布局比較復(fù)雜,這時(shí)候可以考慮使用自定義布局的形式導(dǎo)入。方法很簡(jiǎn)單。
新建一個(gè)布局文件,例如example.xml
在父布局中引入:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/example"/> </LinearLayout>
以上就是Android最基本的四種布局的詳細(xì)內(nèi)容介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選