在我们去了解Android视图绘制的原理的时候,往往会看到这两个获取视图宽高的方法,那两者到底有什么不同?其不同可以从下面两点来理解:
1.定义概念不同:前者指是View视图实际的宽高(包括被隐藏的部分);后者指的是视图显示的宽高。
2.赋值时机不同:前者在View视图执行onMeasure后被赋值;后者是在视图执行了onLayout后被赋值。若在Activity的onCreate中取值,会发现其值一直为0。
注:在一些极端的情况下,系统可能需要多次测量才能确定视图最终的宽高,在这种情况下,在onMeasure方法中得到的视图从测量宽度/高度可能是不准确的。
一个比较好的习惯是在视图的onLayout方法中获取视图的measureWidth/height或width/height。
网友评论