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 的值。

上一篇 下一篇

猜你喜欢

热点阅读