我正在更改height
和width
我的在运行时CustomView
扩展Android View
,如下所示:
@Override
public void onGlobalLayout() {
if(!initialized) {
int containerHeight = instance.getHeight();
int containerWidth = instance.getWidth();
myView.getLayoutParams().height = (int) (containerHeight * HEIGHT_RATIO);
myView.getLayoutParams().width = (int) (containerWidth * WIDTH_RATIO);
instance.getViewTreeObserver().removeGlobalOnLayoutListener(this);
initialized = true;
}
}
此代码在container view
构造函数中。
另外我CustomView
onMeasure()
的如下:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// maximum width we should use
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(width, height);
}
这是结果:
width
和我指定height
的位置与绿色矩形的大小相同。
我的问题是:为什么我的自定义视图(红色矩形)的实际大小与我在LayoutParams
?