getMeasuredHeight 和 getHeight 有啥区别

Posted

技术标签:

【中文标题】getMeasuredHeight 和 getHeight 有啥区别【英文标题】:What is the difference between getMeasuredHeight and getHeightgetMeasuredHeight 和 getHeight 有什么区别 【发布时间】:2013-10-31 16:42:16 【问题描述】:

我尝试在onGlobalLayout 中致电View.getMeasuredHeightView.getHeight。两者都给了我相同的结果。

我想知道,在什么情况下它们的值会有所不同?有没有例子可以证明这一点?

我尝试在谷歌中搜索。第一个结果似乎与这个问题无关:android: How to get a custom View's height and width?

【问题讨论】:

【参考方案1】:

当您使用视图时,它会对其子元素施加一定的大小限制。这些限制可能会阻止子元素占用它想要的空间量。

documentation for the View class 对这些属性的描述如下:

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

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

第二对简单地称为宽度和高度,有时也称为宽度和高度。这些尺寸定义了屏幕上视图、绘图时和布局后的实际大小。这些值可能(但不一定)与测量的宽度和高度不同。宽度和高度可以通过调用getWidth()和getHeight()获得。

另见:http://developer.android.com/guide/topics/ui/how-android-draws.html

【讨论】:

那么 getMeasuredWidth() 和 getMeasuredHeight() 以像素为单位返回值,否则 getWidth() 和 getHeight() 以 dp 为单位返回值? @DennyKurniawan 所有四个测量值都以像素为单位返回。

以上是关于getMeasuredHeight 和 getHeight 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Android getMeasuredHeight 返回错误值!

getMeasuredHeight() 与 getHeight() 的区别

getMeasuredHeight()与getHeight的区别

getMeasuredHeight() 是不是以像素或 dp 为单位返回值

GETH的安装和使用(Windows)

Android获取view高度