Alessandro Posté(e) 9 novembre 2009 Share Posté(e) 9 novembre 2009 Bonjour, J'ai crée 2 lignes avec la methode OnDraw(). En suite je voudrais, par l' OptionMenu, changer les couleur des lignes. Je sais qu'il faut utiliser la methode invalidate() pour "metre à jour le canvas" mais ou ?? Avez vous une idee ? Merci ... @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, 0, 0, "lineA"); menu.add(0, 1, 0, "lineB") ; return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: paintTextB.setColor(Color.GRAY); PaintB.setAlpha(50); return true; case 1: //some... return true; } return false; } ... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 9 novembre 2009 Share Posté(e) 9 novembre 2009 à priori il faudrait que dans tn onDraw tu ai un truc du genre (c'est pourri mais l'idée est là): dans ta classe: private boolean _gray=false; dans ton onDraw: if(_gray){ //dessiner la ligne en gris }else{ //dessiner la ligne en pas gris } et dans ton menu: case 0: _gray = true; invalidate(); //du canvas ou de l'activity .. à voir ça va rappelr la méthode onDraw qui redessinera avec la couleur choisie.... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Alessandro Posté(e) 9 novembre 2009 Auteur Share Posté(e) 9 novembre 2009 Merci, oui j'ai effectivement pensé à quelque chose comme ca... mais le vrai problème est que je ne peux pas appeler la méthode invalidate() dans OptionsMenu() car on est de hors de la Class. En fait c'est surtout ça ma question : comment appeler invalidate() dans OptionsMenu() ? voilà merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 10 novembre 2009 Share Posté(e) 10 novembre 2009 J'ai pas vraiment compris ce que tu souhaite faire ... mais je pense que y'a beaucoup plus simple! Tu veux changer la couleur des cellules du menu? Si oui, il suffit de changer le style de ces menus Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 10 novembre 2009 Share Posté(e) 10 novembre 2009 dans ton menu tu peux accéder au this de ton activity par NomActivity.this, ..... ca devrait aider pour le invalidate. -- Posté depuis BBFoC HTC Magic/sapphire Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 10 novembre 2009 Share Posté(e) 10 novembre 2009 Je crois que je viens de comprendre le principe voulu (merci popolbx : tes réponses m'ont aidés à comprendre). Le problème réside, comme bien souvent chez les débutants, de la séparation entre View et Activity. Essai de bien extraire ce qui est relatif à la vue de ce qui est de l'Activity. Ensuite ça te permettra de faire un invalidate dans le code de ta vue. (Essaie aussi d'utiliser invalidate(Rect) ou invalidate(int, int, int, int) car ça sert à rien d'invalider l'inutile). En clair ton Activity gère les bouton du menu et dès qu'il y a un clic tu notifie la vue qu'elle doit être mise à jour avec une nouvelle couleur (et faire un invalidate()). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 10 novembre 2009 Share Posté(e) 10 novembre 2009 pzar contre ma réponse dépend de la façon dont tu as codé ton menu, ma solution ne fonctionne que si tu fais un truc du genre: menu.onclick=new OnMenuClickListener(){ public truc(){ MonActivity.this.invalidate(); } }); si tu as fait : menu.onclick=new TonListenerDefiniAilleurs();.... ça ne fonctionnera pas Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.