View的getMeasuredWidth/Height和getWidth/Height的区别

在我们去了解Android视图绘制的原理的时候,往往会看到这两个获取视图宽高的方法,那两者到底有什么不同?其不同可以从下面两点来理解:

1.定义概念不同:前者指是View视图实际的宽高(包括被隐藏的部分);后者指的是视图显示的宽高。

2.赋值时机不同:前者在View视图执行onMeasure后被赋值;后者是在视图执行了onLayout后被赋值。若在Activity的onCreate中取值,会发现其值一直为0。

注:在一些极端的情况下,系统可能需要多次测量才能确定视图最终的宽高,在这种情况下,在onMeasure方法中得到的视图从测量宽度/高度可能是不准确的。

一个比较好的习惯是在视图的onLayout方法中获取视图的measureWidth/height或width/height。

你可能感兴趣的:(View的getMeasuredWidth/Height和getWidth/Height的区别)