getMeasuredWidth()、getWidth()、La
2020-07-06 本文已影响0人
果果_Zhen
一、getMeasuredWidth() 和 getMeasuredHeight()
以 getMeasuredWidth() 方法为例,源码如图1, 其中mMeasuredWidth 是最近一次调用 measure(width, height) 之后,计算的完整的测量信息。这个值仅应该在 measure 和 layout 期间使用。在 layout 之后应该使用 getWidth() 方法。
图1 getMeasuredWidth()二、getWidth() 和 getHeight()
以 getWidth() 为例,源码如下,因此 getWidth() 是在执行 layout 方法时进行赋值的,因此在 onLayout() 中就可以得到 View 的 getWidth() 和 getHeight()
图2 getWidth()三、LayoutParams 的 width 和 height
LayoutParams 的信息是布局里 layout_xxx 设置,因此width 和 height,是这个View想要多宽,多高的信息,可以是MATCH_PARENT = -1, WRAP_CONTENT = -2, 或者精确的值(单位px)
总结:
什么时候可以正确的得到这三种值?
1、getMeasuredWidth() 和 getMeasuredHeight() 在measure方法调用后可以使用。
2、getWidth() 和 getHeight() 在layout之后完成后才可以使用。
3、LayoutParams中的参数是不变的,是 layout_xxx 的值。