ANDROID: Мой пользовательский вид не полностью раскрашен

1

Я создал класс, который расширяет представление, и это метод 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;
 }
}
Теги:
android-custom-view

2 ответа

0
Лучший ответ

Я понял. Как оказалось, мне удалось переключить ширину и высоту в вызове setMeasuredDimension(int, int). Я думал, что сделал это должным образом, но после нескольких часов вытягивания волос решил, что это действительно не так.

0

Возможно, переопределить метод onMeasure (int widthMeasureSpec, int heightMeasureSpec) и не забудьте вызвать "setMeasuredDimension (int, int)", как описано в документации

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

  • 0
    Я добавил код, подробно описывающий этот метод, в исходном посте. В конечном итоге specMode не указан?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню