Я создал класс, который расширяет представление, и это метод 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;
}
}
Я понял. Как оказалось, мне удалось переключить ширину и высоту в вызове setMeasuredDimension(int, int)
. Я думал, что сделал это должным образом, но после нескольких часов вытягивания волос решил, что это действительно не так.
Возможно, переопределить метод onMeasure (int widthMeasureSpec, int heightMeasureSpec) и не забудьте вызвать "setMeasuredDimension (int, int)", как описано в документации
http://developer.android.com/reference/android/view/View.html#onDraw(android.graphics.Canvas)