Android active link of url in TextView

AndroidUrlTextview

Android Problem Overview


I have getting dynamic text from a web service and showing the same in a TextView. Sometimes the TextView has url like <a href="http://hello.com">hello</a>. I have set the text using the following code.

textView.setText(Html.fromHtml(sampletext));

And also set android:autoLink="web" in the corresponding xml of that contains the TextView. Now the link is showing properly with blue color and underline, but I found the its just a dead link. Nothing is happening if we try to click it. What I have to do to make the link active?

Android Solutions


Solution 1 - Android

After revisiting all solutions, a summary with some explanations:

android:autoLink="web" 

will find an URL and create a link even if android:linksClickable is not set, links are by default clickable. You don't have to keep the URL alone, even in the middle of a text it will be detected and clickable.

<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>

To set a link via the code, same principle, no need for pattern or android:autoLink in layout, the link is found automatically using Linkify:

  final TextView myClickableUrl = (TextView) findViewById(R.id.myClickableUrlTextView);
  myClickableUrl.setText("Click my web site: www.stackoverflow.com");
  Linkify.addLinks(myClickableUrl, Linkify.WEB_URLS);

Solution 2 - Android

This works for me:

<TextView
	android:text="www.hello.com"
	android:id="@+id/TextView01"
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent"
	android:autoLink="web">
</TextView>

Solution 3 - Android

To Save any one time the true solution is

    <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>

and i use it and it work perfect

Solution 4 - Android

There are 2 cases:

  • the text looks like "click on http://www.hello.com"

then you just have to set the autoLink attribute in the xml so that the link is automatically detected in the text:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="web"
    android:text="click on http://www.hello.com"/>
  • the text looks like click on <a href="http://hello.com">hello</a>

then you have to do it by code and tell the text is html, and specify a Link movement method for the click:

    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());

Solution 5 - Android

Check out this approach:

String text = "Visit stackoverflow.com";
TextView label = new TextView(this);
label.setText(text);
Pattern pattern = Pattern.compile("stackoverflow.com");
Linkify.addLinks(label, pattern, "http://");

Solution 6 - Android

i have give some idea which i have found it

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>  

Solution 7 - Android

In your XML, you need to add android:linksClickable="true" in the TextView.

Solution 8 - Android

If you are displaying in textview the string from strings.xml, strings containing the web link should not have word "a href=". If these words are deleted from the strings.xml file then the link will work.

Solution 9 - Android

Add these lines of code to your textView in xml File it will work perfectly fine..

android:autoLink="web" android:textColorLink="@android:color/holo_orange_dark" android:linksClickable="true"

or if want a your own link in textview add these lines of code in your java file

  final SpannableString s = new SpannableString("https://play.google.com/store/apps/details?id=cn.wps.moffice_eng");
  Linkify.addLinks(s, Linkify.ALL);

set this 's' String in your TextView by function

Textview.setText(s);

and don't forget to add this line

 ((TextView)findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());

id will be your textview id

Enjoy ...

Solution 10 - Android

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiondev_androidView Question on Stackoverflow
Solution 1 - AndroidL. G.View Answer on Stackoverflow
Solution 2 - AndroidVinayak BevinakattiView Answer on Stackoverflow
Solution 3 - AndroidM.Ali El-SayedView Answer on Stackoverflow
Solution 4 - AndroidArnaud SmartFunView Answer on Stackoverflow
Solution 5 - AndroidSherif elKhatibView Answer on Stackoverflow
Solution 6 - AndroidPratikView Answer on Stackoverflow
Solution 7 - AndroidLuxuryModeView Answer on Stackoverflow
Solution 8 - AndroidDharam JindalView Answer on Stackoverflow
Solution 9 - AndroidTarun GroverView Answer on Stackoverflow
Solution 10 - AndroidRenetikView Answer on Stackoverflow