Android SDK中的getWidth / Height()和getMeasuredWidth / Height()之间的区别是什么?
Android文档说 ,视图有两种尺寸, 测量尺寸和图纸尺寸 。 测量的尺寸是在度量传递 ( onMeasure方法)中计算的尺寸 ,而graphics尺寸是屏幕上的实际尺寸。 特别是,文件说:
这些值可能但不一定与测量的宽度和高度不同。
所以,我的问题是:什么可能使绘图尺寸与测量尺寸不同? 如果onMeasure(int,int)方法遵守布局要求(作为参数widthMeasureSpec和heightMeasureSpec给出 ,那么SDK如何决定该视图应该具有不同的graphics大小?
另外,如何在Android源代码中使用测量的宽度/高度来计算绘图宽度/高度? 我尝试查看视图源代码 ,但我无法弄清楚如何用measuredWidth / Height来计算最终的宽度/高度。 也许这与填充有关,但我不确定。
顾名思义,在测量和布局阶段使用了measuredWidth / height。
让我举个例子,
一个小部件被要求测量自己,小部件说,它想要200px200px。 这是测量的宽度/高度。
在布局阶段,即在onLayout方法。 该方法可以使用其children的measuredWidth / height或通过调用视图的布局方法来指定新的宽度/高度。
可以说onLayout方法现在调用childview.layout(0,0,150,150)视图的宽度/高度不同于测量的宽度/高度。
我build议不要在onLayout方法外使用measuredWidth / height。
总结。
- onMeasure – >设置measuredWidth / measuredHeight
- onLayout – >设置小部件的宽度/高度。
additionallly
public void View.layout(int l, int t, int r, int b)
似乎是位置和大小的分配发生的地方。