2010-12-05 21 views
3

J'ai une vue personnalisée qui est insérée dynamiquement et le onDraw n'est pas appelé. J'ai d'abord fait la vue personnalisée sans l'insertion dynamique et cela a bien fonctionné, mais quand je l'ai déplacé vers ma base de travail, je ne peux pas obtenir onDraw pour être appelé, même si le constructeur de vue est appelé et le onMeasure est également appelé. J'ai essayé de mettre invalidate() et postInvalidate() appels autour de l'endroit, mais ils ne semblent pas forcer la vue à dessiner. La hiérarchie des vues est la même pour les deux versions et je suis perdu.Android - onDraw n'étant pas appelé dans une vue personnalisée insérée dynamiquement

Quelqu'un peut-il aider?

EDIT: Un peu plus de tests a montré que onDraw est appelée sur l'émulateur, mais pas le combiné. Les valeurs onSizeChanged sur le combiné ont également les valeurs correctes, mais sur l'émulateur, les valeurs sont toutes 0.

EDIT: J'ai joué avec et je n'arrive toujours à rien, alors j'ai mis une prime sur il. Si vous avez besoin de plus de code/xml/info alors s'il vous plaît faites le moi savoir.

Répondre

1

J'ai changé le View à un TextView et il semble fonctionner maintenant, même si je suis un peu confus quant à pourquoi le View ne fonctionne pas.

1

Cela ressemble beaucoup à un problème que j'avais récemment, avec ma première vue personnalisée. Avez-vous remarqué si, lors du chargement de la hiérarchie des vues, vos vues personnalisées s'affichent? et de toute façon apparaissent-ils dans l'aperçu filaire ou non? Si ce dernier est le cas, c'est requestLayout() qui n'est pas appelé (chargement des appels de hiérarchie de vue sur chaque vue - c'est pourquoi les vues s'affichent). J'ai également constaté qu'un bug similaire a déjà été signalé here.

+0

Merci pour votre réponse, mais les vues ne s'affichent pas dans la visionneuse de hiérarchie et lorsque requestLayout est remplacé par une instruction de journal, il est certainement appelé. En fait, le test sur l'émulateur - onDraw est maintenant appelé, mais le canevas a des dimensions en plein écran, pas seulement la vue. – Martyn