父LinearLayout視圖可能有數百個子視圖。爲了獲得更好的性能,我的解決方案如下:像懶加載。
LinearLayout
與(可能)幾百子視圖那種違背更好的性能。我認爲你在尋找的是一個ListView
與無盡的適配器(一個簡單的谷歌搜索將顯示如何實現它,而不是那麼困難)。只要到達最後一個加載的元素,該適配器就會開始加載視圖(加載新視圖時顯示加載視圖)。
如果你仍然想使用LinearLayout
:
如果你只是想使LinearLayout
填滿屏幕的內容時,它的第一個規定,您可以在onCreate
方法張貼在您的視圖之一Runnable
(如果這是您首先填充LinearLayout
的地方)。在那Runnable
找到LinearLayout
的高度,並將其與當前現在的孩子的高度相比較。如果組合子高度較小,則高度將增加更多視圖以進行補償。
如果LinearLayout
處於ScrollView
,你要添加其他孩子當加載視圖變得可見然後監視ScrollView
的滾動和當加載視圖變得可見添加新的兒童。通過檢查用戶滾動的量與當前存在的LinearLayout
兒童的總高度相比,看到加載視圖何時變得可見。
初始響應:
你的問題有點含糊關於你想知道什麼。如果你有特定的問題,你應該從那開始。
例如,頂級LinearLayout視圖有300個子視圖。但是 設備屏幕尺寸僅顯示11個子視圖一次。
請不要讓自己陷入這樣的場景。如果內存不足(即所有這些視圖將保留在內存中),那麼這些視圖數量太大會導致性能不佳甚至應用程序崩潰。
android如何計算一次有多少個子視圖可以顯示?
每個View
和ViewGroup
有onMeasure
方法來衡量本身和它的孩子(如果可用)。該LinearLayout
將有一個名爲其onMeasure
方法,在這種方法中,將測量它的孩子(與措施method
)給他們,他們應該多大一些建議(在LinearLayout
接收它應該從它的父有多大的一些建議)。如果您想了解如何完成此操作,請查看LinearLayout
的源代碼。
視圖如何知道它會被繪製?
我不明白你想知道什麼。要在屏幕上繪製視圖,將調用onDraw
方法。
讀從這裏http://developer.android.com/reference/android/ MeasureSpec.UNSPECIFIED view/View.MeasureSpec.html –