Я создал класс, расширяющий 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;
}
}