Android介面編程——Android布局組件(二)

來源:互聯網
上載者:User

標籤:

Android介面編程

2.3.1 布局介紹

布局用於定義Activity中UI元素的排列結構,Android提供了LinearLayout線性布局、RelativeLayout相對布局 、FrameLayout幀布局 、TableLayout表格布局、AbsoluteLayout座標布局 共五種布局,可以通過兩種方式聲明布局:

? 在 XML 中聲明 UI 元素。Android 提供了對應於 View 類及其子類的XML 元素

? 運行時執行個體化布局元素。可以通過編程建立 View 對象和 ViewGroup 對象(並操縱其屬性)。

在 XML 中聲明 UI 的優點在於,可以更好地將應用的外觀與控制應用行為的代碼隔離。UI 描述位於應用代碼外部,這意味著在修改或調整描述時無需修改您的原始碼並重新編譯。例如,可以建立適用於不同螢幕方向、不同裝置螢幕尺寸和不同語言的 XML 布局。此外,在 XML 中聲明布局還能更輕鬆地顯示 UI 的結構,從而簡化問題調試過程。因此,Android應用中普遍採用在XML中布局UI元素

2.3.2布局的實現 編寫布局檔案

布局檔案都必須只包含一個根項目,並且該元素必須是視圖對象或 ViewGroup 對象。定義根項目之後,即可再以子項目的形式添加其他布局對象或UI元素,從而逐步構建定義布局的視圖階層


在 XML 中聲明布局後,請在您的 Android 項目 res/layout/ 目錄中以 .xml 副檔名儲存檔案,以便其能夠正確編譯。

載入布局檔案

當編譯應用時,每個 XML 布局檔案都會編譯到一個 View 資源中。應該在 Activity.onCreate() 回調方法中使用應用代碼載入布局資源。通過調用 setContentView(),以 R.layout.layout_file_name 形式向其傳遞對布局資源的引用來執行此操作。


2.3.3線型布局

所有的子項目都按照垂直或水平的順序在介面上排列,如果垂直排列,則每行僅包含一個介面元素,


如果水平排列,則每列僅包含一個介面元素


線型布局的常用屬性

表2.3-1線性布局常用屬性

XML屬性

備忘

android:orientation

horizontal

vertical

 

決定橫向排列,還是縱向排列

 

android:layout_weight

int

將父布局中剩餘的尺寸按各兄弟元素的weight值比例進行分配,與“wrap_content”配合使用

 

android:layout_margin

 

dp

 

設定對象邊緣與父布局的邊緣之間的空白

 

android:padding

 

dp

 

設定自身內部元素距離自身邊緣的距離

 

android:background

color/drawable

設定整個布局畫面的背景

android:gravity

Top,bottom,left,right,center

 

元素在自身所屬地區內的對齊

 

android:layout_gravity

 

Top,bottom,left,right,center

 

元素在布局中的對齊

 

 

下面通過執行個體講解Linearlayout的用法






2.3.2 FrameLayout布局

最簡單的布局形式 ,組件都放在螢幕的左上方,組件是按次序加入次序層疊在一起,上一層的控制項會覆蓋下一層的控制項


表2.3-2FrameLayout的常用屬性

XML屬性

備忘

android:layout_margin

 

dp

 

設定對象邊緣與父布局的邊緣之間的空白

 

android:padding

 

dp

 

設定自身內部元素距離自身邊緣的距離

 

android:background

color/drawable

設定整個布局畫面的背景

android:gravity

Top,bottom,left,right,center

 

元素在自身所屬地區內的對齊

 

android:layout_gravity

 

Top,bottom,left,right,center

 

元素在布局中的對齊

 

 

下面通過執行個體講解FrameLayout的用法

執行個體3-2:設計3-5所示介面

 

 

圖3-5


2.3.3相對布局RelativeLayout

一種非常靈活的布局方式,通過指定介面元素與其他元素的相對位置關係,確定介面中所有元素的布局位置。特點:能夠最大程度保證在各種螢幕類型的手機上正確顯示介面布局表

相對布局屬性比較多,為了便於理解和記憶通常我們把屬性分為三類:

第一類:屬性值為true或false,如表2.3-3所示

 

表2.3-3RelativeLayout的常用屬性

XML屬性

備忘

android:layout_centerHrizontal

水平置中

android:layout_centerVertical

垂直置中

android:layout_centerInparent

相對於父元素完全置中

android:layout_alignParentBottom

貼緊父元素的下邊緣

android:layout_alignParentLeft

貼緊父元素的左邊緣

android:layout_alignParentRight

貼緊父元素的右邊緣

android:layout_alignParentTop

貼緊父元素的上邊緣

第二類:屬性值必須為id的引用名“@id/id-name”,如表2.3-4所示

 

表2.3-4RelativeLayout的常用屬性

XML屬性

備忘

android:layout_below

在某元素的下方

android:layout_above

在某元素的的上方

android:layout_toLeftOf

在某元素的左邊

android:layout_toRightOf

在某元素的右邊

android:layout_alignTop

本元素的上邊緣和某元素的的上邊緣對齊

android:layout_alignLeft

本元素的左邊緣和某元素的的左邊緣對齊

android:layout_alignBottom

本元素的下邊緣和某元素的的下邊緣對齊

 

第三類:屬性值為具體的像素值,主要是調整ui元素之間的間距,如表2.3-5所示

 

 

表2.3-5RelativeLayout的常用屬性

XML屬性

備忘

android:layout_marginBottom

離某元素底邊緣的距離

android:layout_marginLeft

離某元素左邊緣的距離

android:layout_marginRight

離某元素右邊緣的距離

android:layout_marginTop

離某元素上邊緣的距離

android:layout_marginBottom

離某元素底邊緣的距離

android:layout_marginLeft

離某元素左邊緣的距離

android:layout_marginRight

離某元素右邊緣的距離

 

下面通過執行個體講解RelativeLayout的布局設計





2.3.4表格布局TableLayout

Tablelayout以行和列的形式對控制項進行管理,每一行為一個TableRow對象,或一個View控制項。當為TableRow對象時,可在TableRow下添加子控制項,預設情況下,每個子控制項佔據一列。有多少個子控制項就有多少列;當為View時,該View將獨佔一行,2.3.7所示

 

 

圖2.3-7

 

表2.3-6TableLayout的常用屬性

XML屬性

備忘

android:layout_colum

指定該單元格在第幾列顯示

android:layout_span

指定該單元格佔據的列數(未指定時,為1)

android:stretchColumns

設定可伸展的列。該列可向行方向伸展,最多可佔據一整行

android:shrinkColumns

設定可收縮的列。當該列子控制項的內容太多,已經擠滿所在行,那麼該子控制項的內容將往列方向顯示

android:layout_colum

指定該單元格在第幾列顯示

android:layout_span

指定該單元格佔據的列數(未指定時,為1)

android:stretchColumns

設定可伸展的列。該列可向行方向伸展,最多可佔據一整行

 

 

下面通過執行個體講解TableLayout的布局設計





2.3.5絕對布局AbsoluteLayout

AbsoluteLayout是根據元素指定的x/y座標值在螢幕上進行顯示的布局。容器的座標系是以左上方為(0, 0)點,當垂直向下為y軸和水平向右為x軸。AbsoluteLayout 沒有頁邊框,允許元素之間互相重疊。

因為需要為元素固定座標點,使介面代碼太過剛性,以導致在不同的裝置上相容性差,開發中我們通常不推薦使用 AbsoluteLayout ,因此在這裡我們只需簡單的瞭解一下即可。




衝天之峰   20160706

Android介面編程——Android布局組件(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.