1

我创建了一个扩展 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;
 }
}
4

2 回答 2

0

也许覆盖“onMeasure(int widthMeasureSpec,int heightMeasureSpec)”方法,不要忘记调用“setMeasuredDimension(int,int)”,如文档中所述

http://developer.android.com/reference/android/view/View.html#onDraw(android.graphics.Canvas )

于 2010-12-21T21:26:52.230 回答
0

我知道了。事实证明,我设法在setMeasuredDimension(int, int)通话中切换了宽度和高度。我认为我这样做是恰当的,但在拔掉头发几个小时后,确定事实并非如此。

于 2010-12-23T22:56:03.143 回答