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 に答える