getMeasuredHeight和getHeight有什么区别?

56
我试图在`onGlobalLayout`中调用`View.getMeasuredHeight`和`View.getHeight`。两者都给了我相同的结果。
我想知道,在什么情况下它们的值会不同?有没有示例可以证明这一点?
我尝试在Google上搜索。第一个结果似乎与这个问题无关:Android:如何获取自定义视图的高度和宽度?
1个回答

87

当你使用一个View时,它对其子元素施加了一定的尺寸限制。这些限制可能会阻止子元素占用其所需的空间。

View类的文档描述了这些属性如下:

视图的大小用宽度和高度表示。实际上,一个视图拥有两组宽度和高度值。

第一组称为测量宽度和测量高度。这些尺寸定义了视图在其父容器中想要的大小(有关详细信息,请参见布局)。可以通过调用getMeasuredWidth()和getMeasuredHeight()来获取测量尺寸。

第二组仅称为宽度和高度,有时也称为绘制宽度和绘制高度。这些尺寸定义了视图在屏幕上的实际大小,在绘制时和布局后。这些值可能与测量宽度和测量高度不同,也可能相同。可以通过调用getWidth()和getHeight()来获取宽度和高度。

另请参阅:http://developer.android.com/guide/topics/ui/how-android-draws.html


1
那么getMeasuredWidth()和getMeasuredHeight()返回像素值,而getWidth()和getHeight()返回dp值? - Denny Kurniawan
7
所有四个测量值以像素为单位返回。 - Dan Bechard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接