IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

TextView avec couleurs


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 91
    Par défaut TextView avec couleurs
    Bonjour,

    Je voudrais créer un éditeur de texte très simple avec des couleurs, c'est-à-dire que je veux être capable, en cliquant sur un mot écrit en noir, de mettre la première syllabe en rouge et la dernière en bleu.

    Quelqu'un saurait-il m'indiquer comment créer une telle vue ?

    J'ai réussi à le faire en J2SE grâce à JTextPane et StyledDocument.

    Merci de votre aide, je débute tout juste

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Il me semble que tu peux passer par un format Html

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mText.setText(Html.fromHtml("<balise>" + string + "</balise>" + "<balise2>" + string2 + "</balise2>"));
    Cela devrait marcher .

    Sinon tu peux toujours essayer de créer ta propre TextView qui implémentera n Color avec ses positions
    http://grepcode.com/file/repository..../TextView.java

    Les fonctions intéressantes dans ton cas updateTextColors
    et te créer une nouvelle Fonction setColor(int color, int posdeb, int posend)
    il y aura d'autres modification surement mais je pense que cela soit possible .

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 91
    Par défaut
    merci, je vais plutôt opter pour créer ma TextView. D'après ce que j'ai compris il faut créer une classe MyTextView qui dérive de TextView.
    Mais concernant la nouvelle fonction dont tu parles setColor(int color, int posdeb, int posend), tu as une idée de comment l'implémenter?

    cordialement

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Mais concernant la nouvelle fonction dont tu parle setColor(int color, int posdeb, int posend), tu a une idée de comment l implémenter?
    Hmm , je ne me suis pas pencher dessus ...

    mais en faisant une recherche j'ai trouvé ceci :
    http://developer.android.com/referen...ngBuilder.html

    Google l'a déjà fait en fait .

    public abstract void drawText (Canvas c, int start, int end, float x, float y, Paint p)

    Since: API Level
    Just like drawText(char[], int, int, float, float, Paint).
    il te faut juste sauvegarder tes couleur (donc tes Paints) avec leur position respective dans cette classe.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 91
    Par défaut
    Merci pour ton aide, ça marche plutôt bien avec les HTML et je vais m'en contenter pour le moment.
    Admettons que j'ai une TextView avec un texte simple, je voudrais pouvoir cliquer sur un mot(click long) et accéder depuis le code au mot sélectionné et changer la couleur de ce mot uniquement (callback avec des index begin et end)
    J'ai essayé pas mal de truc pour réussir à accéder au mot cliqué mais sans succès (j'ai aussi essayé la EditView).
    Tu saurais comment faire pour faire ça stp?

    Merci

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Je n'y avais pas pensé mais tu peux aussi utiliser les gradient pour ta demande .
    Maintenant vu ce que tu veux faire je ne pense pas que cela soit utile .
    Enfin c'était pour l'info.

    Sinon pour revenir sur ta demande.

    Admettons que j ai une textView avec un texte simple, je voudrais pouvoir cliquer sur un mot(click long) et accéder depuis le code au mot sélectionné et changer la couleur de ce mot uniquement(callback avec des index begin et end)
    Tu peux utiliser cette méthode , il te suffira just de connaître la position du click de l'utilisateur , après avec l'offset à toi de trouver le mot correspondant avec les séparateur connu (espace , point ,...).
    http://developer.android.com/referen...(float, float)


    Ou si tu veux que l'utilisateur sélectionne direct le mot utilise alors ces deux fonctions GetSelctionStart et GetSelectionEnd, qui te retournerons le début et la fin du mot choisi :
    http://developer.android.com/referen...SelectionEnd()

    Edit : la première solution requière l'API 14

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 91
    Par défaut remplacement d'une partie de texte TextView
    Bonsoir,

    j'ai une TextView avec un texte très long. En cliquant sur un mot du texte, je voudrais changer la couleur du mot uniquement grâce au HTML et setText.
    Le problème est que setText permet uniquement de mettre à jour tout le texte, ce qui n'est pas très bon en terme de performances.
    Y' aurait-il un moyen de mettre a jour uniquement une partie du texte, c-à-d une sorte de setText(newText, beginOffset, endOffset)?

    Merci

Discussions similaires

  1. Réponses: 10
    Dernier message: 30/11/2006, 17h36
  2. Combobox avec couleur et font
    Par charaf dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 27/06/2006, 20h12
  3. Ligne dans une BufferedImage avec couleur inverse
    Par bourbon dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 25/05/2006, 01h31
  4. PopupMenu : afficher un dessin avec couleur personnalisée
    Par MiJack dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/02/2006, 12h54
  5. [VB.NET] Brush avec couleur définie en RGB
    Par jennings dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/12/2004, 08h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo