测量视图的大小?

时间:2013-03-10 04:28:20

标签: android android-view

有人可以解释我何时以及如何衡量从xml文件中膨胀的视图的确切大小?

据我所知,在调用setContentView后,视图的高度和宽度不会立即可用。必须有一些在视图完成布局后调用的回调,但我在Activity回调中找不到任何明显的回调。我正在寻找相当于iOS编程中的“viewDidLoad”。

我对于如何实际读取高度和宽度也有点不清楚。 View上有getHeight()和getWidth()函数,但我也看过使用getLayoutParams()。height和getLayoutParams()。width的示例。这两个值有什么区别,我想要哪一个?

我的最终目标是通过在必要时修改宽度来强制我的视图达到固定的宽高比(这是一个横向视图)。我无法在XML中找到任何方法,所以我想我可以在运行时读取高度和宽度,计算正确的宽度并设置它。如果有人知道更好的解决方案,我会很感激。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用ViewTreeObserver类。这是一个很好的答案

How to retrieve the dimensions of a view?

第二部分

LayoutParams.height是您希望视图布局后的高度,可以设置为特定常量,如WRAP_CONTENT,getHeight()返回实际高度(在视图未布局之前返回0)。 / p>