- Android 基礎
- Android - 首頁
- Android - 概述
- Android - 環境搭建
- Android - 架構
- Android - 應用元件
- Android - Hello World 示例
- Android - 資源
- Android - 活動 (Activities)
- Android - 服務 (Services)
- Android - 廣播接收器 (Broadcast Receivers)
- Android - 內容提供商 (Content Providers)
- Android - 片段 (Fragments)
- Android - 意圖/過濾器 (Intents/Filters)
- Android - 使用者介面
- Android - UI 佈局
- Android - UI 控制元件
- Android - 事件處理
- Android - 樣式和主題
- Android - 自定義元件
- Android 高階概念
- Android - 拖放
- Android - 通知
- 基於位置的服務
- Android - 傳送郵件
- Android - 傳送簡訊
- Android - 電話呼叫
- 釋出 Android 應用
- Android 實用示例
- Android - 警報對話方塊
- Android - 動畫
- Android - 音訊捕捉
- Android - AudioManager
- Android - 自動完成
- Android - 最佳實踐
- Android - 藍牙
- Android - 相機
- Android - 剪貼簿
- Android - 自定義字型
- Android - 資料備份
- Android - 開發者工具
- Android - 模擬器
- Android - Facebook 整合
- Android - 手勢
- Android - Google 地圖
- Android - 圖片特效
- Android - ImageSwitcher
- Android - 內部儲存
- Android - JetPlayer
- Android - JSON 解析器
- Android - LinkedIn 整合
- Android - 載入動畫
- Android - 本地化
- Android - 登入介面
- Android - MediaPlayer
- Android - 多點觸控
- Android - 導航
- Android - 網路連線
- Android - NFC 指南
- Android - PHP/MySQL
- Android - 圓形進度條
- Android - 進度條
- Android - 推送通知
- Android - RenderScript
- Android - RSS 閱讀器
- Android - 螢幕錄製
- Android - SDK 管理器
- Android - 感測器
- Android - 會話管理
- Android - Shared Preferences
- Android - SIP 協議
- Android - 拼寫檢查
- Android - SQLite 資料庫
- Android - 支援庫
- Android - 測試
- Android - 文字轉語音
- Android - TextureView
- Android - Twitter 整合
- Android - UI 設計
- Android - UI 模式
- Android - UI 測試
- Android - WebView 佈局
- Android - Wi-Fi
- Android - 小部件
- Android - XML 解析器
- Android 資源
- Android - 問答
- Android - 資源
- Android - 討論
Android - UI 佈局
使用者介面的基本構建塊是View物件,它由View類建立,佔據螢幕上的矩形區域,負責繪圖和事件處理。View是widget的基類,widget用於建立互動式UI元件,如按鈕、文字欄位等。
ViewGroup是View的子類,它提供了一個不可見的容器,用於容納其他View或ViewGroup,並定義它們的佈局屬性。
在第三層,我們有不同的佈局,它們是ViewGroup類的子類,一個典型的佈局定義了Android使用者介面的視覺結構,可以使用View/ViewGroup物件在執行時建立,也可以使用簡單的XML檔案main_layout.xml宣告佈局,該檔案位於專案的res/layout資料夾中。
佈局引數
本教程主要介紹如何基於XML檔案中定義的佈局建立GUI。佈局可以包含任何型別的widget,例如按鈕、標籤、文字框等。下面是一個包含LinearLayout的簡單XML檔案示例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a Button" />
<!-- More GUI components go here -->
</LinearLayout>
建立佈局後,可以在應用程式程式碼中,在您的Activity.onCreate()回撥實現中載入佈局資源,如下所示:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
Android 佈局型別
Android提供了許多佈局,您幾乎會在所有Android應用程式中使用它們來提供不同的檢視、外觀和感覺。
| 序號 | 佈局及描述 |
|---|---|
| 1 |
線性佈局 (LinearLayout)
LinearLayout是一個檢視組,它沿單個方向(垂直或水平)排列所有子項。 |
| 2 |
相對佈局 (RelativeLayout)
RelativeLayout是一個檢視組,以相對位置顯示子檢視。 |
| 3 |
表格佈局 (TableLayout)
TableLayout是一個檢視,它將檢視分組到行和列中。 |
| 4 |
絕對佈局 (AbsoluteLayout)
AbsoluteLayout允許您指定其子項的確切位置。 |
| 5 |
框架佈局 (FrameLayout)
FrameLayout是螢幕上的一個佔位符,您可以使用它來顯示單個檢視。 |
| 6 |
列表檢視 (ListView)
ListView是一個檢視組,顯示可滾動的專案列表。 |
| 7 |
網格檢視 (GridView)
GridView是一個ViewGroup,以二維可滾動網格顯示專案。 |
佈局屬性
每個佈局都有一組屬性來定義該佈局的視覺屬性。所有佈局之間有一些共同的屬性,還有一些特定於該佈局的屬性。以下是常用屬性,將應用於所有佈局
| 序號 | 屬性及描述 |
|---|---|
| 1 |
android:id 這是唯一標識檢視的ID。 |
| 2 |
android:layout_width 這是佈局的寬度。 |
| 3 |
android:layout_height 這是佈局的高度。 |
| 4 |
android:layout_marginTop 這是佈局頂部額外的空間。 |
| 5 |
android:layout_marginBottom 這是佈局底部額外的空間。 |
| 6 |
android:layout_marginLeft 這是佈局左側額外的空間。 |
| 7 |
android:layout_marginRight 這是佈局右側額外的空間。 |
| 8 |
android:layout_gravity 這指定了子檢視的位置。 |
| 9 |
android:layout_weight 這指定了應分配給檢視的佈局中額外空間的多少。 |
| 10 |
android:layout_x 這指定了佈局的x座標。 |
| 11 |
android:layout_y 這指定了佈局的y座標。 |
| 12 |
android:layout_width 這是佈局的寬度。 |
| 13 |
android:paddingLeft 這是佈局填充的左側填充。 |
| 14 |
android:paddingRight 這是佈局填充的右側填充。 |
| 15 |
android:paddingTop 這是佈局填充的頂部填充。 |
| 16 |
android:paddingBottom 這是佈局填充的底部填充。 |
此處寬度和高度是佈局/檢視的尺寸,可以用dp(密度無關畫素)、sp(比例無關畫素)、pt(點,為1/72英寸)、px(畫素)、mm(毫米)和in(英寸)來指定。
您可以使用精確的測量值指定寬度和高度,但更常見的是,您將使用以下常量之一來設定寬度或高度:
android:layout_width=wrap_content 告訴您的檢視根據其內容所需的大小調整自身大小。
android:layout_width=fill_parent 告訴您的檢視變得與其父檢視一樣大。
Gravity屬性在定位檢視物件方面起著重要作用,它可以採用一個或多個(用'|'分隔)以下常量值。
| 常量 | 值 | 描述 |
|---|---|---|
| top | 0x30 | 將物件推到其容器的頂部,而不改變其大小。 |
| bottom | 0x50 | 將物件推到其容器的底部,而不改變其大小。 |
| left | 0x03 | 將物件推到其容器的左側,而不改變其大小。 |
| right | 0x05 | 將物件推到其容器的右側,而不改變其大小。 |
| center_vertical | 0x10 | 將物件放置在其容器的垂直中心,而不改變其大小。 |
| fill_vertical | 0x70 | 如果需要,增加物件的高度以使其完全填充其容器。 |
| center_horizontal | 0x01 | 將物件放置在其容器的水平中心,而不改變其大小。 |
| fill_horizontal | 0x07 | 如果需要,增加物件的寬度以使其完全填充其容器。 |
| center | 0x11 | 將物件放置在其容器的垂直和水平軸的中心,而不改變其大小。 |
| fill | 0x77 | 如果需要,增加物件的高度和寬度以使其完全填充其容器。 |
| clip_vertical | 0x80 | 可以設定的附加選項,使子項的頂部和/或底部邊緣剪輯到其容器的邊界。剪輯將基於垂直重力:頂部重力將剪輯底部邊緣,底部重力將剪輯頂部邊緣,兩者都不剪輯兩個邊緣。 |
| clip_horizontal | 0x08 | 可以設定的附加選項,使子項的左側和/或右側邊緣剪輯到其容器的邊界。剪輯將基於水平重力:左側重力將剪輯右側邊緣,右側重力將剪輯左側邊緣,兩者都不剪輯兩個邊緣。 |
| start | 0x00800003 | 將物件推到其容器的開頭,而不改變其大小。 |
| end | 0x00800005 | 將物件推到其容器的結尾,而不改變其大小。 |
檢視標識
檢視物件可能有一個唯一ID分配給它,這將唯一地標識樹中的檢視。XML標籤中的ID語法為:
android:id="@+id/my_button"
以下是@和+符號的簡要說明:
@符號位於字串的開頭,表示XML解析器應該解析和擴充套件ID字串的其餘部分,並將其標識為ID資源。
加號(+)表示這是一個必須建立並新增到我們的資源中的新資源名稱。要建立檢視物件的例項並從佈局中捕獲它,請使用以下方法:
Button myButton = (Button) findViewById(R.id.my_button);
