天天看點

Android App開發基礎篇—常用布局簡介

作者:書生聽雨景闌珊林

Android App開發基礎篇—常用布局簡介

前言:每一個App都有許多個界面,有了界面再來加載顯示資料。Android提供了一些布局和控件(以下統稱為元件),友善開發者進行界面的搭建,如GridLayout、FrameLayout、LinearLayout、RelativeLayout、TableLayout布局,還有TextView、EditText、Button控件等。本篇我們先來簡單認識一下常用的幾個布局,包括:RelativeLayout、LinearLayout、FrameLayout。

一、屬性:

正式介紹布局之前,先來認識一下屬性。每個元件都有自己的屬性,比如大小、顔色等等。在搭建界面的時候,依據需求修改元件的屬性,就是我們要做的事情。在衆多的屬性中,有一些是對每個元件都适用的,這裡我們稱這種屬性為通用屬性;有一些是某種元件特有的,我們稱為特有屬性。首先,先來介紹幾個常用的通用屬性:

(1)id:設定元件的id,相當于給元件設定一個身份辨別。

(2)layout_width:設定元件的寬度,機關dp。預設值:(1)wrap_content:設定元件寬度适應内容的實際寬度;(2)match_parent:設定元件寬度鋪滿容器。

(3)layout_height:設定元件的高度,機關dp。預設值:(1)wrap_content:設定元件高度适應内容的實際寬度;(2)match_parent:設定元件高度鋪滿容器。

(4)padding:設定元件的邊界與内容的間距,機關dp。當設定padding時,是同時設定了元件的4個邊界與内容的間距。也可以使用paddingBottom(下邊界)、paddingTop(上邊界)、paddingLeft(左邊界)、paddingRight(右邊界)單獨設定某個方向上的邊界與内容的間距。

(5)layout_margin:設定元件與其他元件之間的間距,機關dp。當設定layout_margin時,會同時設定元件與其上、下、左、右4個方向上的其他元件的間距,也可以使用layout_marginBottom、layout_marginTop、layout_marginLeft、layout_marginRight單獨設定其中一個方向上的間距。

(6)gravity:設定元件中的内容在元件中的對其方式。可以同時設定多個值,值與值之間使用一個豎線 “|”分隔。如

Android App開發基礎篇—常用布局簡介
Android App開發基礎篇—常用布局簡介

​編輯

(7)background:設定元件的背景。可以使用顔色,也可以使用圖檔。使用顔色時,屬性值格式是“#ffffffff”,即以“#”開頭,後接8位16進制數表示的顔色值。其中,顔色值的前2位表示顔色的透明度,如果不需設定透明度,可以省略。即假設我要設定一個紅色背景,我可以将background設定為“#ee0000”,如果設為“#80ee0000”,則表示設定了透明度為80的紅色。background也可以設定為圖檔,使用圖檔時,屬性值格式為“@drawable/圖檔名”或者“@mipmap/圖檔名”,因為圖檔一般放在項目中的drawable檔案夾(使用Eclipse時都放在drawable檔案夾,但是AS中新增了mipmap檔案夾,預設的ic_launcher就是放在其中,當然也可以自己建立drawable檔案夾)。

二、RelativeLayout 相對布局:

相對布局中的内容能夠以互相之間相對位置的方式進行排列,我們可以在相對布局中将要放置的内容随意排放在任意位置。相對布局有下列一些特有屬性:

1、布局中的内容在布局中的對齊排列方式:

(1)layout_alignParentLeft:設定布局中的内容是否與布局的左邊界對齊,屬性值:true或false。另外還有上、下、右邊界對齊,分别可以通過設定以下三個屬性來實作。layout_alignParentTop、layout_alignParentBottom、layout_alignParentRight。

(2)layout_centerHorizontal:設定布局中的内容是否在布局中水準居中,屬性值為true或false,預設為false。

(3)layout_centerVertical:設定布局中的内容是否在布局中垂直居中,屬性值為true或false,預設為false。

(4)layout_centerInParent:設定布局中的内容是否在布局中居中,相當于同時設定了layout_centerHorizontal和layout_centerVertical為true。

2、布局中元件與元件的對齊方式:layout_alignXXX,屬性值:元件的id。其中XXX表示上(Top)、下(Bottom)、左(Left)、右(Right)四個方向。例如對某個控件設定了android:layout_alignLeft="@+id/button1" 屬性,則表示将該控件與另一個id為button1的控件進行左對齊。

3、控件與控件的相對位置關系:

(1)layout_toLeftOf:屬性值:元件id。設定目前元件位于指定的id所表示的元件的左邊。如對某個元件設定了android:layout_toLeftOf="@+id/btn_ok",則表示将該元件置于id為btn_ok的元件左邊。同理,要設定右邊位置,就是設定元件的layout_toRightOf屬性。

(2)layout_above:屬性值:元件id。設定目前元件位于指定的id所表示的元件的上方。如對某個元件設定了android:layout_above="@+id/btn_ok",則表示将該元件置于id為btn_ok的元件上方。要設定下方位置,則要設定元件的layout_below屬性。

二、LinearLayout 線性布局:

線性布局中的内容會根據所設定的布局的方向,依次(從上到下或者從左到右,按所設方向決定)排列。線性布局的特有屬性有:

(1)orientation:設定布局的方向,屬性值:vertical(豎直)或horizontal(水準)。

(2)layout_weight:權重。該屬性是對布局中的内容設定的。位于線性布局中的元件可以設定layout_weight屬性,設定了該屬性的元件将按照比例瓜分所屬布局中剩餘的所有空間。需要注意的是,對于設定了該屬性的所有元件,其寬或者高(看布局的方向,水準方向就是寬,豎直方向就是高)需設定為0dp或者match_parent,并且所有需要設定的元件設定的值必須一緻(即全部為0dp或全部為match_parent)。在實際開發時IDE也會給予提示。如果設定為0dp,則layout_weight屬性值越大,所占空間越大,如果設定為match_parent,則layout_weight屬性值越大,所占空間越小。

(3)layout_gravity:設定控件在布局上的對齊方式。相比于RelativeLayout比較靈活的對齊方式,LinearLayout中的内容的對齊方式也可以同時設定多個屬性,但是最終生效的隻會是屬性值中最後一個值。

三、FrameLayout 幀布局:

幀布局中的内容會按照加入的順序,從下到上進行層疊。即最先加入的會置于最底層,然後後面加入的會依次向上層疊。

後記:Android中為我們提供了常用的布局友善我們的界面搭建工作。充分利用布局的組合,可以讓我們輕松應付App開發中各種各樣的界面。本篇隻是簡單介紹一下幾種常用布局及其屬性在布局檔案中的使用,還有更多靈活的使用方法需要在實際應用中進行探索。

繼續閱讀