Android應用布局技巧 建立可復用的UI元件

2021-08-26 21:29:00 字數 1728 閱讀 5862

android平台提供了廣泛的ui可視元件---widget,把這些小的可視的構件組合到一起,就可以給使用者提供複雜而有用的介面。但是,應用程式經常需要一些高階可視元件,要滿足這樣的需求,並要達到高效的目的,可以把一些標準的widget組合成乙個新的可復用的元件。

例如,包含乙個進度條和乙個取消按鈕的操作進度表示元件;包含兩個按鈕的面板(取消和確認操作);帶有乙個圖示、標題和說明的面板等等。通過編寫定製的view類能夠很容易的建立ui元件,但是使用xml會更加容易。

在android xml布局檔案中,每個標籤都對應於乙個實際的類例項(這個類始終是view類的子類),android的ui工具集中還有三個特殊的標籤,它們沒有對應的view例項:、和。本文展示如何使用標籤來建立純粹的xml可視元件。有關如何使用的資訊,請看「合併布局」的文章,它跟

組合起來使用,功能會更強大。

顧名思義,標籤是要在當前布局中包含另乙個xml布局。這個標籤的使用就像下例顯示的那樣簡單,例子中直接引用了android的home應用程式的源**:

android:id

="@+id/workspace"

android:layout_width

="fill_parent"

android:layout_height

="fill_parent"

launcher:defaultscreen

="1"

>

android:id

="@+id/cell1"

layout

="@layout/workspace_screen"

/>

android:id

="@+id/cell2"

layout

="@layout/workspace_screen"

/>

android:id

="@+id/cell3"

layout

="@layout/workspace_screen"

/>

在中只有layout屬性是必須的。這個屬性的值不帶有android命名空間的字首,它是希望要包含的布局檔案的引用。在例子中,相同的布局被包含了三次。這個標籤還能夠覆蓋一些被包含布局的屬性。上例中的android:id指定了被包含布局的根view的id;如果定義了乙個新的id,那麼被包含布局的這個id也會被覆蓋。類似的,可以覆蓋所有的布局引數。就意味著任何android:layout_*屬性都可以在標籤中使用。以下示例中,相同的布局被包含了兩次,但只有第一次覆蓋了布局屬性:

layout

="@layout/image_holder"

android:layout_height

="fill_parent"

android:layout_width

="fill_parent"

/>

layout

="@layout/image_holder"

/>

警告:如果要覆蓋布局的尺寸,就必須同時覆蓋android:layout_height和android:layout_width屬性---不能只覆蓋高度或只覆蓋寬度。如果只覆蓋其中乙個,不會有任何效果。沒有覆蓋的屬性,依然會繼承源布局中的屬性設定。

在需要根據裝置的配置來定製ui部分時,這個標記時特別有用的。例如,activity的主布局可以被放到layout/目錄中,然後包含儲存在layout-land/和layout-port/目錄中的另外布局,這樣就可以在橫屏和縱屏的布局中共享大多數的ui元素了。

原文(英):

Android 常用布局整理

android layout above 將該控制項的底部至於給定id的控制項之上 android layout below 將該控制項的頂部至於給定id的控制項之下 android layout toleftof 將該控制項的右邊緣和給定id的控制項的左邊緣對齊 android layout to...

android 常用布局公用屬性

相對布局常用屬性 子類控制項相對子類控制項 值是另外乙個控制項的id android layout above 位於給定di控制項之上 android layout below 位於給定di控制項之下 android layout toleftof 位於給定控制項左邊 android layout ...

CSS的常用布局以及小技巧

css 是開放網路的核心語言之一,由 w3c 規範 進行標準化。css 被分為不同等級 css1 現已廢棄,css2.1 是推薦標準,css3 分成多個小模組且正在標準化中。各個模組都在不斷公升級中,css文件 1 若父元素沒有寫height,則直接在父元素寫 padding 10px 0 子元素就...