我创建了一个扩展View的类,这是onDraw方法。程序创建一个迷宫,并获得适当的高度和宽度读数,我似乎需要在onDraw方法中调用它们(否则它只会返回0)。这可能是搞砸一切的原因。但是,它会根据绘制的视图部分中可见方块的间距获得正确的高度。
看似未上漆的视图部分与上下文菜单的大小有关,与备件不匹配。我找了其他人遇到这个问题,似乎没有其他人有这个问题,而且我可以说,我没有做任何与他们特别不同的事情。如果我能提供任何其他见解,请告诉我。
我还不能发布图片,因为我在这整个堆栈溢出事件中是新的=( 因此,我尽力解释这种现象。
谢谢!
@Override
public void onDraw(Canvas canvas) {
if(firstRun){
width = getMeasuredWidth();
height = getMeasuredHeight();
MazeMake();
invalidate();
}else
for (int i = 0; i < c; i++)
for (int j = 0; j < r; j++) {
grid[i][j].paintSq(canvas);
}
}
@Override
protected void onMeasure(int wMeasureSpec, int hMeasureSpec) {
int measuredHeight = measure(hMeasureSpec);
int measuredWidth = measure(wMeasureSpec);
setMeasuredDimension(measuredHeight, measuredWidth);
}
private int measure(int measureSpec) {
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
if (specMode == MeasureSpec.UNSPECIFIED)
return 500;
else {
return specSize;
}
}
答案 0 :(得分:0)
也许覆盖“onMeasure(int widthMeasureSpec,int heightMeasureSpec)”方法,并且不要忘记调用“setMeasuredDimension(int,int)”,如文档中所述
http://developer.android.com/reference/android/view/View.html#onDraw(android.graphics.Canvas)
答案 1 :(得分:0)
我明白了。事实证明,我设法在setMeasuredDimension(int, int)
电话中切换宽度和高度。我以为我做得很好,但是经过几个小时的拉扯我的头发,确定事实并非如此。