Android Documentation says View 有两种尺寸,即测量尺寸和工程图尺寸。测量的尺寸是在测量过程中计算得出的尺寸(onMeasure方法),而图形尺寸是屏幕上的实际尺寸。特别是,文档说:
因此,我的问题是:什么使图纸尺寸与测量尺寸不同?如果onMeasure(int,int)方法遵守了布局要求(与参数widthMeasureSpec和heightMeasureSpec相同),SDK如何确定 View 应具有不同的图形尺寸?
另外,如何在Android Source Code中/在何处使用测量的宽度/高度来计算工程图的宽度/高度?我试图研究View source code,但是我不知道如何使用measuredWidth/Height来计算最终的宽度/高度。也许与填充有关,但是我不确定。
最佳答案
顾名思义,在测量和布局阶段将使用measuredWidth/height。
让我举个例子,
要求一个小部件进行自我测量,该小部件表示它希望为200px x 200px。这是测量的宽度/高度。
在布局阶段,即在onLayout方法中。该方法可以使用其子级的measuredWidth/height,也可以通过调用 View 的布局方法来分配新的宽度/高度。
假设onLayout方法调用childview.layout(0,0,150,150),现在 View 的宽度/高度与测量的宽度/高度不同。
我建议不要在onLayout方法之外使用measuredWidth/height。
总结。
额外地
public void View.layout(int l, int t, int r, int b)
似乎是位置和大小分配发生的地方。