• Android Video Tutorials

Android - UI 佈局



使用者介面的基本構建塊是View物件,它由View類建立,佔據螢幕上的矩形區域,負責繪圖和事件處理。View是widget的基類,widget用於建立互動式UI元件,如按鈕、文字欄位等。

ViewGroupView的子類,它提供了一個不可見的容器,用於容納其他View或ViewGroup,並定義它們的佈局屬性。

在第三層,我們有不同的佈局,它們是ViewGroup類的子類,一個典型的佈局定義了Android使用者介面的視覺結構,可以使用View/ViewGroup物件在執行時建立,也可以使用簡單的XML檔案main_layout.xml宣告佈局,該檔案位於專案的res/layout資料夾中。

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);
廣告
© . All rights reserved.