2010-08-03 65 views
2

我想獲取活動視圖的大小,但無法在任何活動生命週期回調(onCreate,onStart,onResume)中獲取該信息。我假設這是因爲意見還沒有被繪製。在什麼時候繪製視圖,是否有回調,我可以把我的代碼,所以我可以得到視圖的大小?何時在android中繪製視圖?

findViewById(R.id.header).getHeight(); 
+0

你想要什麼'高度'? – Macarse 2010-08-03 17:00:42

+0

我有一個gridview有x個組件,我想以gridview適合屏幕而不需要滾動的方式調整這些組件的大小。它可以在縱向模式下正常工作,因爲我可以獲取設備寬度並按每行項目數除。但在橫向模式下,我需要採取設備的高度,但gridview不跨越整個高度,所以我需要能夠確定可用於gridview的空間量。正在計劃通過將設備高度 - gridview上方的視圖底部位置來做到這一點。這可能是最好的方法。 – Gunny 2010-08-03 17:24:48

回答

3

How are views drawn提供了繪製視圖過程的良好概述。基本上,有一個通行證,衡量什麼都是想要的,然後是第二次通過,當事情擺脫了。

這聽起來像是爲了您的問題,但您應該能夠通過手動設置高度值來實現您的目標。你玩過gridview的stretchMode,gravity,layoutHeight等嗎?參見GridView javadoc瞭解參數選擇的一些細節。

+0

我想在java代碼中手動設置gridview的大小,但爲了做到這一點,我需要知道我有多少空間可用於gridview,考慮活動中的其他視圖,但我無法獲得該值我無法確定如何調整gridview的大小。 – Gunny 2010-08-03 18:14:06

+0

但是你爲什麼要手動設置gridview的大小呢? – 2010-08-03 18:39:23

+0

因爲我在gridview中放置了一個遊戲的切片,並且滾動從遊戲中消失。使用gridview可能是一個錯誤。我會更好地使用TableLayout或創建自定義佈局,但這是我的第一個Android應用程序,我不想馬上潛入。 – Gunny 2010-08-03 18:48:54

0

它應該在實例化佈局後在onCreate(),onStart()和onResume()中工作。請嘗試:

findViewById(R.id.header).getLayoutParams().height 
+0

返回高度爲-2。在嘗試獲取高度之前,我確實調用了setContentView()。還有什麼我需要做的? – Gunny 2010-08-03 18:11:34

+0

嗯..讓我多做一點研究;會回到你身邊。 – 2010-08-03 18:52:19