Android布局include的用法


1.引言      

        可復用組件是優秀的面向對象設計的標識,Android支持抽象視圖,從而提供了一個類似層級的模塊化。通過把UI分離成獨立的組件,可以在整個應用中使用它們。這樣會讓應用具有統一的外觀並且是的改變設計更加容易。

2.<include>標簽

     在android中提供了一個布局文件包含另一個布局文件的簡單方法:<include>標簽。通過這個標簽,另一個布局被包含在試圖層級中。就好比幾個小朋友都在畫畫,我把小明畫的天粘在我這張紙上,小紅畫的草地粘在我這張紙的底下,小白畫的場景粘在中間,那么我就有了一副漂亮的畫。當然我需要考慮的就是怎么樣銜接最漂亮,不會有牽強,所以我要注意的:(1)我先給定要粘畫的區域大小 (2)不要做色彩的銜接,免得不流暢。

下面是一個<include>的例子

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

     android:id="@+id/sub_id"

     android:layout_width="match_parent"

     android:layout_height="match_parent"

     <include layout="@layout/sub_layout"/>

</LinearLayout>

這里我們android:layout_* 就是我們在設置要粘貼的畫布區域,隨心所遇的設置。其余的屬性都是被忽略的。

3.<merge>標簽

在經常使用<include>標簽時,布局可能會變得嵌套過多而導致UI繪圖變慢。<merge>標簽可以解決這個問題。<merge>標簽指導系統移除子布局的頂層容器。當你包含一個子布局時,里面包含的視圖會被合並到主布局中去,但沒有額外的容器試圖。

3.ViewStub

      盡管<include>標簽是你能夠很容易的把UI分離成可復用的組件,你可能會發現被包含的布局很少會被用到。類似於進度和錯誤藍的布局時可用的,但是在正常使用的過程中並不會出現,當被包含今布局之后,這些UI元素仍然是被擴張的,他們會占用CPU周期和內存,盡管是不被顯示的。那怎么辦?還好Android提供了一個解決問題才抽象。

      ViewStub類是一個不會占用布局空間的不可見的視圖。ViewStub引用一個將被添加到UI的外部布局,與<include>不同的是,被引用的布局不會被擴張,知道你發送特定請求他才會擴張。

     有了ViewStub之后,布局的可選部分只會在你需要它們的時候可用,否則他們就會不可見,這樣加快了UI的繪制速度。

<ViewStub

   android:id="@+id/view_stub"

   android:layout_width="match_parent"

   android:layout_height="match_parent"

   android:inflatedId="@+id/sub"

   android:layout="@layout/sub"/>

Android視圖有3個可能的可見狀態,每個都對布局有不同的影響。

**View.VISIBLE:視圖對用戶可見,並且會占據布局的空間。

**VIew.INVISIBLE:視圖對用戶不可見,但是會占用布局的空間。

**View.GONE:視圖對用戶不可見也不會占用布局空間。

要想擴張用ViewStub引用外部布局,可以自己擴張它或者改變它的可見性:

((ViewStub)findViewById(R.id.view_stub)).setVisibility(View.VISIABLE);


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com