Android - OnDraw не вызывается в динамически вставленном пользовательском представлении

StackOverflow https://stackoverflow.com/questions/4358605

  •  08-10-2019
  •  | 
  •  

Вопрос

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

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

Редактировать: немного больше тестирования показало, что onDraw Призывается к эмулятору, но не трубку. Также onSizeChanged На телефоне проходит правильные значения, но на эмуляторе значения все 0.

Редактировать: Я играл с ним, и все еще не могу никуда добраться, поэтому на него положил щедрость. Если вам нужен больше кода / xml / info, пожалуйста, дайте мне знать.

Это было полезно?

Решение 2

Я изменил View к А. TextView И кажется, что сейчас работает, хотя я немного запутался Зачем то View не работал.

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top