咱們常常會遇到這樣的狀況,運行時動態根據條件來決定顯示哪一個View或佈局。經常使用的作法是把View都寫在上面,先把它們的可見性都設爲View.GONE,而後在代碼中動態的更改它的可見性。這樣的作法的優勢是邏輯簡單並且控制起來比較靈活。可是它的缺點就是,耗費資源。雖然把View的初始可見View.GONE可是在Inflate佈局的時候View仍然會被Inflate,也就是說仍然會建立對象,會被實例化,會被設置屬性。也就是說,會耗費內存等資源。android
推薦的作法是使用android.view.ViewStub,ViewStub是一個輕量級的View,它一個看不見的,不佔佈局位置,佔用資源很是小的控件。能夠爲ViewStub指定一個佈局,在Inflate佈局的時候,只有ViewStub會被初始化,而後當ViewStub被設置爲可見的時候,或是調用了ViewStub.inflate()的時候,ViewStub所向的佈局就會被Inflate和實例化,而後ViewStub的佈局屬性都會傳給它所指向的佈局。這樣,就可使用ViewStub來方便的在運行時,要仍是不要顯示某個佈局。佈局
做者:沈醉在夢
連接:http://www.jianshu.com/p/76ecd3b67515
來源:簡書
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。對象