9
votes

Fixer dynamiquement des liens vers du texte dans strings.xml

J'essaie de faire une application avec la localisation intégrée, mais je veux une manière que je puisse créer un lien Web dans le texte, l'URL étant définie ailleurs (pour la maintenance).

Alors, je avoir mes liens dans res / valeurs / strings.xml: p> xxx pré>

et mon texte localisé dans res / valse-en-rgb / strings.xml p>

Pattern wordMatcher = Pattern.compile("<span1>.*</span1>");
String viewURL =    "content://" + getResources().getString(R.string.someLink);
Linkify.addLinks(tv, wordMatcher , viewURL );


1 commentaires

Peut-être que vous pouvez marquer la réponse de Dule comme le bon :)


4 Réponses :


3
votes

Essayez d'utiliser html.fromhtml () pour convertir le HTML en un Spannable que vous mettez dans le textview . Avec ce que vous avez dans # 1, je m'attendrais à ce que le textview pour afficher la source HTML, non rendu HTML.


3 commentaires

Avec le texte exemple du n ° 1, j'ai essayé ceci: TV.SetText (html.fromhtml (getResources (). GetString (r ) .Getstring (r.string.somelink2))), textview.buffertype.spannable); mais toujours ne pas avoir des liens cliquables. Est-ce que je manque quelque chose dans la mise en page ou y a-t-il autre chose qui me manque?


Cela pourrait fonctionner alors Chaluquant Str = GetResources (). GetText (R.String. Sampletext);


Je ne suis pas capable de le faire fonctionner. Il suffit d'afficher un lien hypertexte, qui n'est pas cliquable.



3
votes

Vous devez implémenter

setMovementMethod(LinkMovementMethod.getInstance());


0 commentaires

17
votes

Le problème est que vos balises de lien "A HREF" sont dans strings.xml et étant analysées comme étiquettes lorsque strings.xml est analysé, ce que vous ne voulez pas . Ce qui signifie que vous devez avoir d'ignorer les balises à l'aide de CDATA de XML:

exemple texte link1 ]]]>

et ensuite vous pouvez continuer avec html.fromhtml () et le faire cliquer avec linkmovementMethod : xxx


3 commentaires

N'oubliez pas l'adresse http: // dans l'adresse Web, sinon j'obtiens une erreur "Aucune activité visant à gérer l'intention".


Merci! La réponse la plus propre!


Les ressources de chaîne ne sont pas documentées pour prendre en charge les balises HTML arbitraires. Les seuls documenté et pris en charge sont , et . Je ne recommande pas de s'appuyer sur quoi que ce soit d'autre, tel que , travaillant sur toutes les versions et les périphériques Android.



5
votes

Dans votre mise en page Android: Autolink à Web xxx

et dans strings.xml Il suffit d'ajouter l'URL (s). xxx


0 commentaires