getMeasuredWidth, getWidth 有什么区别?
程序员文章站
2022-03-28 16:12:29
原始网页直通车getMeasuredWidth 返回的是测量后的宽度,这个宽度是在 setMeasuredDimension 方法被调用后刷新的。( measure 方法最终会调用 setMeasuredDimension 方法)getWidth 返回的是 layout 出来的宽度,在 View 代码中返回的是 mRight - mLeft ,这两个变量是在 setFrame 方法被调用后赋值的。( layout 方法中会调用 setFrame )也就是说, getMeasuredWidth 返...
getMeasuredWidth
返回的是测量后的宽度,这个宽度是在 setMeasuredDimension
方法被调用后刷新的。( measure
方法最终会调用 setMeasuredDimension
方法)
getWidth
返回的是 layout
出来的宽度,在 View
代码中返回的是 mRight - mLeft
,这两个变量是在 setFrame
方法被调用后赋值的。( layout
方法中会调用 setFrame
)
也就是说, getMeasuredWidth
返回值的大小,取决于 setMeasuredDimension
,而 getWidth
,则取决于 layout
。
在大多数情况下,这两个方法返回的大小都是一样的。
但是在下面这样的情况下就不一样了:
在自定义的 ViewGroup
中,你在 XML
中对 子View
写死了宽度,但是这个 ViewGroup
的排版是固定的一行两个(左右各一个,宽度相同),那么这个 子View
的宽度,就会被强制设置成屏幕的一半,而不是你在 XML
中所设置的宽度。
本文地址:https://blog.csdn.net/qq_26810645/article/details/107598186