2011-03-21 93 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