ANDROID:我的自定义视图没有完全绘制

时间:2010-12-21 20:23:33

标签: android android-custom-view

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

2 个答案:

答案 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)电话中切换宽度和高度。我以为我做得很好,但是经过几个小时的拉扯我的头发,确定事实并非如此。