【发布时间】:2016-03-01 23:15:21
【问题描述】:
我有一个自定义视图,它有几个子视图,fabMenu 是其中一个 ImageView,我在 onMeasure() 方法中编写了以下代码
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
measureChild(fabMenu, widthMeasureSpec, heightMeasureSpec);
int width = fabMenu.getMeasuredWidth();
int height = fabMenu.getMeasuredHeight();
Log.d(TAG, "onMeasure: width " + fabMenu.getMeasuredWidth() + " height " + fabMenu.getMeasuredHeight());
...
}
但每次日志显示不同的值
【问题讨论】:
-
记录传递的
widthMeasureSpec和heightMeasureSpec参数并观察logcat,每次调用onMeasure时它们很可能不同 -
是的,widthMeasureSpec 和 heightMeasureSpec 参数都变了,怎么会呢?我不知道。
-
仔细阅读
MeasureSpec文档以了解onMeasure参数的编码方式