2

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

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

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

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

谢谢。

4

1 回答 1

1

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

如何检索视图的尺寸?

对于第二部分

LayoutParams.height 是您希望视图一旦布局后的高度,可以设置为特定常量,例如 WRAP_CONTENT,getHeight() 返回实际高度(它返回 0 直到视图未布局)。

于 2013-03-10T04:47:55.717 回答