在開(kāi)發(fā)應(yīng)用程序的時(shí)候,經(jīng)常會(huì)遇到這樣的情況,會(huì)在運(yùn)行時(shí)動(dòng)態(tài)根據(jù)條件來(lái)決定顯示哪個(gè)View或某個(gè)布局。那么最通常的想法就是把可能用到的View都寫在上面,先把它們的可見(jiàn)性都設(shè)為View.GONE,然后在代碼中動(dòng)態(tài)的更改它的可見(jiàn)性。這樣的做法的優(yōu)點(diǎn)是邏輯簡(jiǎn)單而且控制起來(lái)比較靈活。但是它的缺點(diǎn)就是耗費(fèi)資源。雖然把View的初始可見(jiàn)View.GONE但是在Inflate布局的時(shí)候View仍然會(huì)被Inflate,也就是說(shuō)仍然會(huì)創(chuàng)建對(duì)象,會(huì)被實(shí)例化,會(huì)被設(shè)置屬性。也就是說(shuō),會(huì)耗費(fèi)內(nèi)存等資源。

  推薦的做法是使用Android.view.ViewStub,ViewStub是一個(gè)輕量級(jí)的View,占用資源非常小的控件。在Inflate布局的時(shí)候,只有ViewStub會(huì)被初始化,然后當(dāng)ViewStub被設(shè)置為可見(jiàn)的時(shí)候(默認(rèn)是不可見(jiàn)的),或是調(diào)用了ViewStub.inflate()的時(shí)候,ViewStub所向的布局就才會(huì)被Inflate和實(shí)例化。

  但ViewStub也不是萬(wàn)能的,下面總結(jié)下ViewStub能做的事兒和什么時(shí)候該用ViewStub,什么時(shí)候該用可見(jiàn)性的控制。

  首先來(lái)說(shuō)說(shuō)ViewStub的一些特點(diǎn):

      (1) ViewStub只能Inflate一次,之后ViewStub對(duì)象會(huì)被置為空。按句話說(shuō),某個(gè)被ViewStub指定的布局被Inflate后,就不會(huì)夠再通過(guò)ViewStub來(lái)控制它了。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式