View.onMeasure () не вызывается - PullRequest
       11

View.onMeasure () не вызывается

10 голосов
/ 14 октября 2011

У меня очень простой пользовательский вид с onMeasure() переопределением. Мой onMeasure() определяет размер в соответствии с фоном Drawable. Когда представление впервые создается из xml, все работает нормально. Но затем я установил другой фон программно, поэтому размер представления должен измениться. Вид теперь имеет другой фон, но он не изменяется, и onMeasure() не вызывается.

Я пробовал все - requestLayout(), forceLayout(), invalidate(), setLayoutParams() - без какого-либо эффекта. Что я делаю неправильно? Я просто хочу, чтобы размер моего вида изменился.

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Проблема заключалась в том, что я вызывал setBackground () внутри onSizeChanged () моего View. Я переделал код и теперь он работает.

0 голосов
/ 14 октября 2011

Вы пробовали очевидную вещь, то есть, как объявлен ваш метод?

Если вы не добавили аннотацию @override, добавьте ее и посмотрите, говорит ли ваш компилятор, что он ничего не переопределяет,Если это так, проверьте имя и подпись метода onMeasure.

В противном случае убедитесь, что вы понимаете, когда должен вызываться метод measure(): Как рисует AndroidПросмотры .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...