实际上,我通过一些基于蒂姆所说的实验来完成这一切.我离开了“onMeasure()”,只为它编写了这段代码:
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
// Call the super class.
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// Set the dimensions of this view.
this.setMeasuredDimension((int) width, (int) width);
}
宽度是全局浮点数.宽度来自哪里?我从视图中写入的这个方法派生宽度来调整大小:
public void initSize(float size)
{
width = size;
this.invalidate();
}
我调用“invalidate()”来重绘视图.有些东西必须调用这个方法,所以我在活动中这样做.首先,我使用以下代码获取Activity中的屏幕大小,而不是View:
Display thisDisplay = this.getWindowManager().getDefaultDisplay();
Point desiredSize = new Point();
display.getSize(desiredSize);
int width = size.x;
您曾经能够在“thisDisplay”上调用名为“getWidth()”的方法,但此方法现在已经过折旧,因此您应该使用“getSize()”.最后,在初始化构造函数之后,调用“initSize()”方法:
nameBox = (InfoBoxView) findViewById(R.id.nameBox);
nameBox.initSize(width);
现在,所有视图的大小都相同.我不知道这是否是最好的方法,但它现在有效,我想我会在这里发布,所以每个人都知道. 🙂