天天看點

Android--UI之ViewStub

前言

  按照最近部落格的路線,繼續講Android的UI開發。今天講解一下ViewStub控件,惰性裝載控件。在本篇部落格中,将了解到ViewStub的常用屬性、方法,以及注意事項。最後将以一個簡單的Demo示範ViewStub的使用。

ViewStub

  在介紹ViewStub之前,可以先了解一下<include/>标簽,這是一個把其它布局資源包含進某個特定的布局中,在很多平台的開發中,都有類似的概念,這樣好處就不用細說了,主要是可以在不同的檔案中編輯界面的布局控件。

   ViewStub的好處是,在某些場景中,并不一定需要把所有的内容都展示出來,可以隐藏一些View視圖,待使用者需要展示的時候再加載到目前的Layout中,這個時候就可以用到ViewStub這個控件了,這樣可以減少資源的消耗,使最初的加載速度變快。

  在ViewStub中,需要用到的屬性也就兩個,Android也為其提供了相應的getter/setter方法:

android:inflateId:重寫ViewStub的父布局控件的Id。

android:layout:設定ViewStub被inflate的布局控件Id。

    onInflate(ViewStub stub, View inflated);

  在VIewStub.OnInflateListener事件的onInflate()方法中,stub為目前待膨脹的ViewStub控件,inflated參數為目前被膨脹的View視圖,可以在其中對其進行一些額外的操作。

  在使用ViewStub的過程中,有一點需要特别注意。對于一個ViewStun而言,當setVisibility(int)或inflate()方法被調用之後,這個ViewStub在布局中将被使用指定的View替換,是以inflate過一遍的ViewStub,如果被隐藏之後再次想要顯示,将不能使用inflate()方法,但是可以再次使用setVisibility(int)方法設定為可見,這就是這兩個方法的差別。而inflate()被調用之後,傳回的是父布局控件對象。

示例Demo

   下面通過一個Demo講解一下上面提到的内容。在這個Demo中,會簡單的使用到<include/>标簽,還定義一個ViewStub控件,用于加載一個RatingBar,提供按鈕加載與隐藏這個RatingBar,最後提供一個按鈕用于操作動态加載的Ratingbar。

  定義的被inflate的控件代碼:

<a></a>

  布局代碼:

  實作代碼:

  效果展示: 

Android--UI之ViewStub
Android--UI之ViewStub
Android--UI之ViewStub

本文轉自承香墨影部落格園部落格,原文連結:http://www.cnblogs.com/plokmju/p/android_ViewStub.html,如需轉載請自行聯系原作者

繼續閱讀