J'ai créé une vue personnalisée et l'ai ajoutée à ma mise en page dans le fichier xml. J'essaye d'actualiser la vue personnalisée avec un événement de clic mais je ne peux pas comprendre comment appeler la méthode onDraw d'une classe différente. invalidate et postInvalidate n'actualisent pas l'affichage personnalisé.Comment appeler onDraw à partir d'une classe différente?
Répondre
Vous devez créer une méthode dans votre vue qui prend les modifications et les appels invalidés de l'intérieur de votre vue.
public void setTextSize (int size) {
mTextSize = size;
invalidate();
}
Fonctionne parfaitement pour moi.
certainement vous devriez appeler View.invalidate(). Assurez-vous que la vue est visible et qu'elle a mesuré les dimensions, c'est-à-dire assurez-vous que la vue getMeasuerdWidth() et getMeasuerdHeight() renvoient 0.
Vous mettez un message de journal au début de votre méthode de retrait pour vérifier que cela fonctionne. mais définitivement devrait être invalide(). Peut-être que vos données ne changent pas?
invalide voir les résultats appelant la méthode onDraw(). En appelant customViewClassName.invalidate() à partir de votre classe différente va à l'appel de la méthode onDraw().
Je voudrais utiliser un gestionnaire de messages pour réaliser un tel mécanisme. Dans votre classe View personnalisée, créez un Handler, puis passez une référence de ce gestionnaire au bouton (par exemple dans l'événement onCreate de votre Activity), puis utilisez le mécanisme sendMessage()/handleMessage() pour communiquer entre le bouton et le autre vue.
Cette méthode permettra également à tous les autres composants d'interagir agréablement avec votre vue personnalisée si vous en avez besoin.
- 1. Comment appeler DataHelper à partir d'un thread ou d'une classe de peinture avec OnDraw?
- 2. Comment appeler onDraw après setContentView (R.layout.main)?
- 3. Comment appeler une méthode d'une classe différente?
- 4. Comment l'accéder à partir d'une classe différente
- 5. Appeler une méthode de classe différente
- 6. Appeler IEnumerator à partir d'une classe Interface
- 7. Android OnDraw()
- 8. Comment appeler une classe .NET à partir d'une classe Java dans Mono à partir d'Android?
- 9. Android NoClassDefFoundError à OnDraw
- 10. Comment appeler Url.Action à partir d'une classe HtmlHelper?
- 11. Comment appeler une classe Java à partir d'Adobe Air
- 12. Comment appeler une méthode à partir d'une autre classe
- 13. Comment appeler une fonction de classe à partir d'une variable
- 14. Comment appeler une classe à partir d'un autre lecteur
- 15. Comment appeler une classe Java à partir d'une activité Android
- 16. Comment appeler GetCustomAttributes à partir d'une classe de base?
- 17. Comment appeler une méthode à partir d'une instance d'une classe?
- 18. android comment appeler un métode de substitution d'autre classe
- 19. Lancer une activité à partir d'une classe différente
- 20. Comment appeler le service Web Grails à distance à partir d'une application différente
- 21. Appel d'une méthode exécutable à partir d'une classe différente
- 22. Winforms: appeler la fonction de formulaire d'entrée d'une classe différente
- 23. comment appeler ajax avec boîte d'entrée différente
- 24. Exécution d'une fonction à partir d'une classe différente avec Swift
- 25. Comment puis-je appeler une fonction différente
- 26. Comment appeler C# à partir de C++
- 27. Comment accéder à une classe d'une classe différente?
- 28. Comment appeler une instance différente de la même classe en python?
- 29. Comment appeler une fonction définie par l'objet à partir d'une fonction différente dans le même objet?
- 30. Android onDraw() ne se fait pas appeler Minuteur
Quel message dois-je envoyer de ma vue personnalisée à ma classe d'activités? Je ne peux apparemment pas envoyer un appel invalider ou une toile. – user1134179