安卓開發之建立可複用的UI組件

來源:互聯網
上載者:User

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

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

  在Android XML布局檔案中,每個標籤都對應於一個實際的類執行個體(這個類始終是View類的子類),Android的UI工具集中還有三個特殊的標籤,它們沒有對應的View執行個體:<requestFocus />、<merge />和<include />。本文展示如何使用<include />標籤來建立純粹的XML可視組件。有關如何使用<merge />的資訊,請看“合并布局”的文章,它跟<include />

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

  顧名思義,<include />標籤是要在當前布局中包含另一個XML布局。這個標籤的使用就像下例顯示的那樣簡單,例子中直接引用了Android的Home應用程式的原始碼:

  <com.android.launcher.Workspace

  android:id="@+id/workspace"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  launcher:defaultScreen="1">

  <includeandroid:id="@+id/cell1"layout="@layout/workspace_screen"/>

  <includeandroid:id="@+id/cell2"layout="@layout/workspace_screen"/>

  <includeandroid:id="@+id/cell3"layout="@layout/workspace_screen"/>

  </com.android.launcher.Workspace>

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

  <!-- override the layout height and width -->

  <includelayout="@layout/image_holder"

  android:layout_height="fill_parent"

  android:layout_width="fill_parent"/>

  <!-- do not override layout dimensions; inherit them from image_holder -->

  <includelayout="@layout/image_holder"/>

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.