Question

J'ai une vue personnalisée dynamiquement inséré et le onDraw n'est pas appelé. J'ai d'abord fait le point de vue personnalisé sans l'insertion dynamique et il a bien fonctionné, mais lors de son déplacement à ma base de code de travail, je ne peux pas onDraw à s'appeler jamais, même si le constructeur de vue est appelé et l'onMeasure s'appelle aussi. Je l'ai essayé de mettre les appels invalidate() et postInvalidate() autour de la place, mais ils ne semblent pas forcer la vue de tirer. La hiérarchie de vue semble le même pour les deux versions et je suis perdu.

Quelqu'un peut-il aider?

EDIT: Un peu plus de tests a montré que onDraw est appelé se l'émulateur, mais pas le combiné. En outre onSizeChanged sur le combiné a les bonnes valeurs à venir à travers, mais sur l'émulateur valeurs sont tous 0.

EDIT: Je joue avec elle au sujet et ne peut toujours pas obtenir partout, ont donc mis une prime sur elle. Si vous avez besoin de plus code / xml / informations alors s'il vous plaît laissez-moi savoir.

Était-ce utile?

La solution 2

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

Autres conseils

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 de vue, vos vues personnalisées apparaissent? et font de toute façon, ils semblent disposés dans l'aperçu wireframe ou non?

Si ce dernier est le cas, il est requestLayout() qui ne soit pas appelé (appels hiérarchie chargement de la vue que sur tous les plans - c'est pourquoi il fait des vues apparaissent). J'ai aussi trouvé qu'un bug similaire a été signalé déjà .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top