Je reçois du texte dynamique à partir d’un service Web et l’affiche dans un TextView. Parfois, TextView a une URL comme <a href="http://hello.com">hello</a>
. J'ai défini le texte en utilisant le code suivant.
textView.setText(Html.fromHtml(sampletext));
Et définissez également Android:autoLink="web"
dans le fichier xml correspondant qui contient la TextView
. Maintenant, le lien s'affiche correctement avec la couleur bleue et souligné, mais j'ai trouvé le son juste un lien mort. Rien ne se passe si nous essayons de cliquer dessus. Que dois-je faire pour rendre le lien actif?
Après avoir réexaminé toutes les solutions, un résumé avec quelques explications:
Android:autoLink="web"
trouvera une URL et créera un lien même si Android: linksClickable n’est pas défini, les liens sont cliquables par défaut. Vous n'êtes pas obligé de garder l'URL seule, même au milieu d'un texte, elle sera détectée et cliquable.
<TextView
Android:text="My web site: www.stackoverflow.com"
Android:id="@+id/TextView1"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:autoLink="web">
</TextView>
Pour définir un lien via le code, même principe, aucun motif ni Android: autoLink dans la mise en page, le lien se trouve automatiquement à l'aide de Linkify:
final TextView myClickableUrl = (TextView) findViewById(R.id.myClickableUrlTextView);
myClickableUrl.setText("Click my web site: www.stackoverflow.com");
Linkify.addLinks(myClickableUrl, Linkify.WEB_URLS);
Cela fonctionne pour moi:
<TextView
Android:text="www.hello.com"
Android:id="@+id/TextView01"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:autoLink="web">
</TextView>
Pour économiser une fois la vraie solution est
<TextView
Android:text="www.hello.com"
Android:id="@+id/TextView01"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:autoLink="web"
Android:linksClickable="true">
</TextView>
et je l'utilise et cela fonctionne parfaitement
Il y a 2 cas:
"click on http://www.hello.com"
alors il vous suffit de définir l'attribut autoLink dans le fichier XML pour que le lien soit automatiquement détecté dans le texte:
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:autoLink="web"
Android:text="click on http://www.hello.com"/>
click on <a href="http://hello.com">hello</a>
ensuite, vous devez le faire par code et indiquez que le texte est html, puis spécifiez une méthode de déplacement de lien pour le clic:
String text = "click on <a href=\"http://hello.com\">hello</a>";
TextView textView = view.findViewById(R.id.textView);
textView.setText(Html.fromHtml(text));
textView.setMovementMethod(LinkMovementMethod.getInstance());
Découvrez cette approche:
String text = "Visit stackoverflow.com";
TextView label = new TextView(this);
label.setText(text);
Pattern pattern = Pattern.compile("stackoverflow.com");
Linkify.addLinks(label, pattern, "http://");
j'ai donner une idée que je l'ai trouvé
TextView tv = ( TextView ) findViewById( R.id.link );
WebView wv = ( WebView ) findViewById( R.id.webView );
URLSpan[] urlSpans = tv.getUrls();
for ( URLSpan urlSpan : urlSpans )
{
wv.loadUrl( urlSpan.getURL() );
}
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Hello, Android</string>
<string name="link">'<a href="http://www.google.com" rel="nofollow">Google</a>'</string>
</resources>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
>
<TextView
Android:id="@+id/link"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:autoLink="all"
Android:linksClickable="true"
Android:text="@string/link" />
<WebView
Android:id="@+id/webView"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1.0" />
</LinearLayout>
Dans votre XML, vous devez ajouter Android:linksClickable="true"
dans le TextView.
essayez ceci https://saket.me/better-url-handler-textview-Android/
C'est une très bonne solution et facile
Answer a raison, MAIS pas complet, car j'avais dans mon xml des propriétés d'autres réponses comme autoLink et linksClickable et de manière programmatique ne fonctionnaient pas. Aussi, quand je passe chaîne avec html à partir d'une ressource chaîne, cela ne fonctionne pas non plus, alors méfiez-vous, vous devez nettoyer votre fichier xml et passer la chaîne directement, exactement comme dans cette réponse.
String text = "click on <a href=\"http://hello.com\">hello</a>";
TextView textView = view.findViewById(R.id.textView);
textView.setText(Html.fromHtml(text));
textView.setMovementMethod(LinkMovementMethod.getInstance());
Je ne l'ai pas essayée sans LinkMovementMethod mais maintenant je vais bien car ça marche enfin. Les autres réponses ne fonctionnaient pas pour moi ou concernaient du texte URL visible, pas du texte cliquable en tant que lien.
Ajoutez ces lignes de code à votre textView
dans xml
File, cela fonctionnera parfaitement.
Android:autoLink="web" Android:textColorLink="@Android:color/holo_orange_dark" Android:linksClickable="true"
ou si vous voulez créer votre propre lien dans textview
, ajoutez ces lignes de code dans votre fichier Java
final SpannableString s = new SpannableString("https://play.google.com/store/apps/details?id=cn.wps.moffice_eng");
Linkify.addLinks(s, Linkify.ALL);
définir la chaîne 's' dans votre TextView
par fonction
Textview.setText(s);
et n'oubliez pas d'ajouter cette ligne
((TextView)findViewById(Android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
id sera votre textview
id
Prendre plaisir ...
Si vous affichez dans textview la chaîne de strings.xml, les chaînes contenant le lien Web ne doivent pas avoir Word "a href =". Si ces mots sont supprimés du fichier strings.xml, le lien fonctionnera.