Jump to content

Parser du text dans un textview pour y afficher des smile ou autre...


Potoman

Recommended Posts

Bonjour tout le monde.

Je recherche actuellement quelque information sur le moyen de parser un textview, en remplacant par exemple les : et ) par un smilé.

Ma question peut parraitre simpliste mais j'ai pas trouver grand chose sur la toile. Et je sais que l'appli sms de base sur android affiche des smilé... Alors je me dit que c'est possible ! ^^

Si quelqu'un a des liens interressant je suis preneur.

Cordialement.

Link to comment
Share on other sites

Je ne saurait pas te dire exactement comment, mais t'a penser à voir du coter des expressions régulières (REGEX) ? En gros grâce à ça tu peut demander a ton programme de remplacer par exemple tous les "é" par des "e" ou encore des suites de caractères comme les smiley.

Le seul soucis c'est que je ne voit pas mettre une image dans un textview. . .

Link to comment
Share on other sites

J'ai trouvé ça :

http://stackoverflow.com/questions/2865452/is-it-possible-to-display-inline-images-from-html-in-an-android-textview

La réponse a l'air pas mal.

Peut on utiliser cette chose dans untextView ou est on obligé de passer par une webView ?

Je demande ça car mes textView sont dans une listView.

Apres quelque test, jai les meme carré cyan que l'auteur... Je vaisdebugger ca dans la matiné.

Re !

J'ai donc fait des essai. Mais je reste bloqué au niveau de l'écriture de ma classe ImageGetter. Je ne sais d'ailleurs pas si c'est la bonne technique pour que j'affiche mes petits smilés...

Donc voilà ma classe :

private class ImageGetter implements Html.ImageGetter {

   public Drawable getDrawable(String source) {
       int id;

       if (source.equals("smile.png.jpg")) {
           id = R.drawable.stack;
       }
       else {
           return null;
       }

       Drawable d = getResources().getDrawable(id);   //Malheureusement ça reste bloqué ici.
//Il me dit qu'il n'a pas accès à getResources()... Je n'arrive donc pas a faire le lien avec mon image dans mon drawable... Oo
       d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());
       return d;
   }
};

Un deuxième problème, je ne sais pas comment appeler correctement la fonction...

Voici mon code :

textViewRagot.setText(Html.fromHtml("moche \"smile.png\"", Html.ImageGetter, HtmlTagHandler));

Je ne sais pas trop quoi mettre dans les deux derniers arguments de la fonction... J'essaye pleins de truc mais sans succés. Je pense que mon problème viens de l'utilisation de l'interface de ImageGetter.

Si quelqu'un peut m'aider.

Cordialement.

Link to comment
Share on other sites

Re, avans de lancer un sujet sur un léger bug que j'ai, je voudrais fermer cette discution en répondant moi même à ce problème.

Il est vrais qu'après plusieur heure de recherche, j'ai trouver le code adapté.

Tout d'abord, voilà la ligne de code pour appeler mon parseur :

textViewRagot.setText(Html.fromHtml(lstRagot.get(position).getRagot(), 
               new ImageGetter() {
                   public Drawable getDrawable(String source) {
                       Drawable bmp = null;
                       int id = 0;
                           if (source.equals("smile.png"))
                               bmp = inflater.getContext().getResources().getDrawable(R.drawable.smile);
                           if (source.equals("lien.png"))
                               bmp = inflater.getContext().getResources().getDrawable(R.drawable.lien);
                           if (source.equals("coeur.png"))
                               bmp = inflater.getContext().getResources().getDrawable(R.drawable.coeur);
                       bmp.setBounds(0,0,bmp.getIntrinsicWidth(), bmp.getIntrinsicHeight());
                       return bmp;
                   }
               }
       ,null));

Cependant, je voulais me servir du deuxième argument pour parser exactement les chaines de caractère que je voulais. Par exemple, ici, je remplace dans une autre fonction tout les ":)" par "smile.png" afin que mon getDrawable() détecte bien la balise image. Mais je n'ai pas réussis à le faire directement dans, c'est a dire qu'il remplace tout les ":)" pour les image, sansavoir besoin detraiter ma chaine decaractère autre part.

Cordialement.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...