2011-07-04 49 views

回答

22

的<包括/>將只包括XML內容在你的基地xml文件,就好像整個事情只是一個大的文件。這是在不同佈局之間共享佈局部件的好方法。

的< ViewStub />是一個有點不同,因爲它不直接包括在內,而當你真正使用它只會加載/需要它,即當您的可見性設置爲VISIBLE(實際可見)或INVISIBLE(仍然不可見,但它的大小不再是0)。這是一個很好的優化,因爲你可以有一個複雜的佈局,有大量的小視圖或標題在任何地方,仍然有你的活動加載速度非常快。一旦你使用其中的一個視圖,它將被加載。

+1

您可以將視圖的可見性設置爲「true」? VISIBLE,INVISIBILE和GONE是視圖的唯一可見性選項嗎?該視圖是隻在視圖爲「VISIBLE」時加載的,還是在不是「GONE」時加載? – RestInPeace

+1

@RestInPeace確實,不知道爲什麼我寫了(現在已經3年了...)。從文檔:「當可見性設置爲'VISIBLE'或'INVISIBLE'時,將調用inflate(),並將此StubbedView替換爲其父級中的膨脹佈局資源。」所以當能見度被設置爲除了「GONE」以外的任何東西時都會膨脹。 – Gregory

+0

感謝您的澄清。 – RestInPeace

3

由於Android標籤的共享和重複使用佈局非常簡單,有時甚至很簡單,您最終可能會得到包含大量視圖的用戶界面,其中一些很少使用。值得慶幸的是,Android提供了一個名爲ViewStub的非常特殊的小部件,它爲您帶來了所有好處,而不會污染您的用戶界面和很少使用的視圖。

ViewStub是一個笨重而輕量級的視圖。它沒有維度,它沒有繪製任何東西,也沒有以任何方式參與佈局。這意味着ViewStub膨脹非常便宜,而且保存在視圖層次結構中非常便宜。 ViewStub可以被最好地描述爲一個懶惰的包含。 ViewStub引用的佈局只會在您決定時誇大並添加到用戶界面。

+0

http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-with.html – Zyoo

0

的另一個重要區別是與佈局充氣。由於不可能改變已經在XML中靜態膨脹的佈局,所以有必要替換視圖並以編程方式設置佈局參數。 可以定義(例如)高度,寬度等......並在運行時膨脹不同的佈局

相關問題