Android - OnDraw не вызывается в динамически вставленном пользовательском представлении
-
08-10-2019 - |
Вопрос
У меня есть пользовательский вид, который динамически вставлен и onDraw
не называется. Я изначально сделал пользовательский вид без динамической вставки, и он работал нормально, однако при перемещении его на мой рабочий код не могу получить onDraw
Чтобы вызвать когда-либо, хотя созвучий конструктор вызывается и onMeasure
Также вызывается. Я пытался положить invalidate()
а также postInvalidate()
звонит вокруг места, но они, кажется, не заставляют взгляд нарисовать. Иерархия просмотра выглядит одинаково для обеих версий, и я потерян.
Может кто-нибудь помочь?
Редактировать: немного больше тестирования показало, что onDraw
Призывается к эмулятору, но не трубку. Также onSizeChanged
На телефоне проходит правильные значения, но на эмуляторе значения все 0.
Редактировать: Я играл с ним, и все еще не могу никуда добраться, поэтому на него положил щедрость. Если вам нужен больше кода / xml / info, пожалуйста, дайте мне знать.
Решение 2
Я изменил View
к А. TextView
И кажется, что сейчас работает, хотя я немного запутался Зачем то View
не работал.
Другие советы
Это звучит очень похоже на проблему, которую я недавно имел, с моим первым пользовательским видом. Вы заметили, если при загрузке просмотра иерархии ваши пользовательские представления отображаются? и в любом случае они кажутся уложены в предварительном просмотре каркаса или нет?
Если последний имеет дело, это requestLayout()
Это не вызывается (иерархия по загрузке иерархии называет это, что на каждом представлении - вот почему это делает представления). Я также обнаружил, что подобная ошибка была сообщена уже здесь.