我知道为放置进行视图大小计算是不受欢迎的。Android 布局管理器应正确放置所有视图。但是,在某些合法情况下,应该进行某种计算以提供提示(例如 GridView 中的列数或调整文本视图的大小以允许在一行中显示最少数量的字符)。对于这些情况,我想获得相关的视图宽度/高度信息或字体宽度/高度/等。然而,getWidth()/getHeigth()/etc 调用永远不会返回有效值,除非视图已在显示器上呈现,但为时已晚。这是第 22 条规定的情况。我想知道是否有某种我还没有找到的方法(android api 在我的脑海中很容易理解)使我上面描述的成为可能。
问问题
10343 次
2 回答
7
在计算其父视图之前无法计算视图的大小,但您始终可以通过调用measure(allowedWidth, allowedHeight)
它来强制执行此计算。然后getMeasuredWidth()
将起作用。
见http://developer.android.com/reference/android/view/View.html#measure(int, int)
于 2011-03-21T09:49:41.063 回答
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()));
我不明白我是怎么错过的!:) 我对测量过程了如指掌,但我一直坚持在自定义视图中使用它...
于 2011-03-21T21:13:22.183 回答