Android - onDraw не вызывается в динамически вставляемом пользовательском представлении - PullRequest
3 голосов
/ 05 декабря 2010

У меня динамически вставляется пользовательский вид, а onDraw не вызывается.Первоначально я создал пользовательское представление без динамической вставки, и оно работало нормально, однако при перемещении его в мою рабочую базу кода я не могу получить onDraw для вызова когда-либо, даже если вызывается конструктор представления и onMeasure такженазывается.Я пытался разместить вызовы invalidate() и postInvalidate() по всему месту, но, похоже, они не заставляют представление рисовать.Иерархия представления выглядит одинаково для обеих версий, и я потерян.

Кто-нибудь может помочь?

РЕДАКТИРОВАТЬ: Немного больше испытаний показали, что onDraw вызывается на эмуляторе, но не на телефоне.Кроме того, onSizeChanged на телефоне имеет правильные значения, но в эмуляторе все значения равны 0.

РЕДАКТИРОВАТЬ: я играл с ним и до сих пор не могу получить, так чтовознаградить за это.Если вам нужно больше кода / xml / info, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 07 декабря 2010

Я изменил View на TextView, и теперь, похоже, он работает, хотя я немного запутался в отношении , почему View не сработал.

1 голос
/ 05 декабря 2010

Это звучит очень похоже на проблему, с которой я столкнулся недавно, с моим первым настраиваемым представлением. Заметили ли вы, что при загрузке иерархии представлений отображаются ваши собственные представления? и в любом случае они отображаются выложенными в предварительном просмотре каркаса или нет?

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

...