Android開發之常用佈局
一、簡介
如下圖所示,按照介面編寫的方式,可以分為傳統佈局和新型佈局兩種。
1.線性佈局:是平常練習demo時最常用的佈局,分為水平、垂直方向兩種線性佈局,即設定其屬性orientation:"vertical或horizontal"。【注:在不指定方向時,預設為horizontal,即水平方向】
2.相對佈局:依據某一控制元件的位置,來確定另一控制元件的位置,即另一控制元件相對於當前控制元件的位置。
3.表格佈局:適用於多行多列的佈局方式,透過表格方式來佈局控制元件的位置,並且每個TableLayout由多個TableRow(表示行)組成。
4.網格佈局:是在Android4.0之後引入的一個新佈局,和上面的TableLayout有點類似,但GridLayout比TableLayout更加好用、靈活。
5.幀佈局:放入的所有控制元件都會被依次放在左上區域,因此下一個控制元件會重疊覆蓋上一個控制元件,且無法為控制元件指定一個確切的位置。一般用於瀏覽單張圖片。
6.絕對佈局:這個佈局一般不會使用。螢幕的左上角為原點(0,0),橫軸為x軸且向右為遞增,縱軸為y軸且向下為遞增,依據layout_x及layout_y屬性分別設定控制元件的X及Y座標。
7.約束佈局:先說一下約束佈局相對於傳統佈局的優勢:①採用視覺化的介面,拖拽控制元件即可完成介面的佈局;②解決佈局巢狀過多的問題,採用約束的方式來指定各個控制元件的位置和關係的,它有點類似於RelativeLayout,但遠比RelativeLayout要更強大。
二、常用屬性
2.1 所有佈局的公有屬性
2.2 各個佈局的特有屬性
- 線性佈局
- 在不指定線性佈局方向的情況下,預設採用水平佈局。
- 為了完全按比例分配剩餘空間,我們一般將控制元件的layout_width或layout_height設定為0dp,然後分別設定其權重值。【這裡僅考慮常用的,至於寬設定為wrap_content或match_parent請自行嘗試即可】
例:水平方向上有3個TextView,設定權重為1:1:1,則程式碼如下:
執行結果如下:
將權重比例改為1:2:3,執行結果如下。
- 相對佈局
- 表格佈局
例:xml佈局程式碼如下:
執行結果如下:
由上面的演示可以看出:
- 如果直接在TableLayout中新增控制元件,則該控制元件將佔滿一行,如第一行的文字框獨佔一行。
- 若要在一行上放置多個控制元件,則需要在控制元件的外層新增一個TableRow容器,如第2、3、4、5行放置了不同個數的的按鈕。
- TableRow容器中控制元件的個數決定了該行有多少列(如圖分別有1,3,2,1,2列),而TableLayout的列數由控制元件最多的TableRow決定(整個佈局有3列)。
- TableLayout的列的寬度由該列中最寬的單元格決定,如Button44444按鈕決定了第二列的寬度。
- 設定layout_column屬性,這裡是跳過第1列,從第2列開始放置控制元件。
- 設定layout_span屬性,這裡是合併3個單元格,即該按鈕佔3個單元格。
請依次新增新增以下佈局屬性:
① 收縮1、2列:
android:shrinkColumns="0,1"
執行結果如下:顯示不完全的button8顯示完全了,並且Button1、Button44444、Button6按鈕有收縮
②隱藏第1列:
android:collapseColumns="0"
執行結果如下:由於第4行僅有一個按鈕,則整個第四行隱藏。
③ 伸展第3列:
android:stretchColumns="2"
執行結果如下:由於僅有第2、3行有第三列,並且Button3與B5有拉伸。
- 網格佈局
GridLayout相關屬性如下:
- 幀佈局
- 幀佈局是這幾種佈局中最簡單的佈局,新增到其中的控制元件預設會放到佈局區域的左上角;
- 幀佈局沒有任何的定位方式,後一個控制元件會覆蓋前一個控制元件;
- 幀佈局的大小有控制元件中最大的控制元件決定;
注:設定前景影像的位置可以兩個屬性疊加,例如右下角:bottom|right。
- 絕對佈局
絕對佈局很少使用,一般有兩個常用控制元件屬性:
- 約束佈局
約束佈局是Google推薦的一種佈局,有關於其拖拽控制元件、新增約束、藉助Inspector設定屬性、Gidelines的使用以及自動新增約束的功能
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2664092/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CSS系列之常用佈局CSS
- 寫給 Android 開發的小程式佈局指南,Flex 佈局!AndroidFlex
- Android 常用佈局 介紹與使用Android
- iOS 常用佈局方式之ConstraintiOSAI
- 阿里Android開發規範:UI 與佈局阿里AndroidUI
- Android開發 - 檢視佈局屬性解析Android
- Android入門教程 | UI佈局之LinearLayout 線性佈局AndroidUI
- Android入門教程 | UI佈局之RelativeLayout 相對佈局AndroidUI
- Android 佈局Android
- Flutter 常用佈局Flutter
- Android效能優化之佈局優化Android優化
- Android系統修改之Notification佈局修改Android
- Android學習—— Android佈局Android
- Android開發-掌握ConstraintLayout(一)傳統佈局的問題AndroidAI
- Android開發 - 掌握ConstraintLayout(一)傳統佈局的問題AndroidAI
- Grid 佈局-子項補充及常用佈局
- Android 佈局優化Android優化
- android --巧用 flexboxLayout 佈局AndroidFlex
- Android中常見的佈局和佈局引數Android
- 常用佈局管理器
- 前端開發常見佈局前端
- 移動 WEB 開發的佈局方式 ---- 響應式佈局Web
- Android FlexboxLayout 佈局詳解AndroidFlex
- Web 開發者如何理解 Flutter 佈局之 —— 2. ContainerWebFlutterAI
- Web 開發者如何理解 Flutter 佈局之 —— 1. TextWebFlutter
- Web 開發者如何理解 Flutter 佈局之 —— 3. ImageWebFlutter
- 三欄佈局之自適應佈局
- 移動佈局基礎之 流式佈局
- android基礎學習-android篇day15-相對佈局的常用屬性Android
- 佈局的常用解決方案
- 八、android當中五大布局控制元件。其它常用佈局Android控制元件
- CSS 三欄佈局之聖盃佈局和雙飛翼佈局CSS
- CSS:三欄佈局之雙飛翼佈局CSS
- Android的四個基本佈局Android
- Android效能優——佈局優化Android優化
- Android中佈局的優化Android優化
- CSS之居中佈局CSS
- [開發教程]第6講:Bootstrap巢狀佈局與流動佈局boot巢狀