2011-03-21 138 views
4

我知道對展示位置進行視圖尺寸計算是皺眉。 Android佈局經理應正確放置所有視圖。 但是,有些合法的情況下,爲了提供提示(例如GridView 中的列數或調整文本視圖的大小以允許在一行中顯示最少數量的字符)應該進行某種計算 。 對於這些情況,我想獲得相關的視圖寬度/高度信息或 字體寬度/高度/等。 但是,getWidth()/ getHeigth()/ etc調用永遠不會返回有效值 ,除非視圖已在顯示器上呈現,但後來才顯示。 這是一個catch-22的情況。 我不知道是否有某種方法,我沒有找到(android api是大 來理解我的腦海中的所有),這使得我已經在上面描述了可能。第一次顯示之前獲取視圖寬度/高度或字體寬度/高度/其他尺寸

回答

5

是的,我測試的建議和它的作品!

示例代碼。

Display display = getWindowManager().getDefaultDisplay(); 
View s = findViewById(R.id.Screen); // Screen is a container layout 
s.measure(display.getWidth(), display.getHeight()); 
View c = findViewById(R.id.Cell0); 
Log.i(TAG, "cell width = " + String.valueOf(c.getMeasuredWidth()) 
    + " height = " + String.valueOf(c.getMeasuredHeight())); 

我不明白的是我錯過了這個! :) 我知道所有關於測量過程,但我堅持在自定義視圖中使用 ...

+0

'display'從哪裏來? – 2011-07-07 10:54:21