前言
按照最近部落格的路線,繼續講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>
布局代碼:
實作代碼:
效果展示:
本文轉自承香墨影部落格園部落格,原文連結:http://www.cnblogs.com/plokmju/p/android_ViewStub.html,如需轉載請自行聯系原作者