重写onMeasure()的正确方法是什么?我见过各种方法。例如,专业Android开发人员使用MeasureSpec来计算尺寸,然后以对setMeasuredDimension()的调用结束。例如:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
另一方面,按照本文所述,“正确”的方法是使用MeasureSpec,调用setMeasuredDimensions(),然后调用setLayoutParams(),最后调用super.onMeasure()。例如:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight));
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
那么哪种方法正确呢?两种方法都对我没有100%的作用。
我想我真正要问的是有人知道一个解释onMeasure(),子视图的布局,尺寸等的教程吗?