Autolink inside a TextView in android
Asked Answered
B

5

20

How to give autolink for some part of textview ? For example : My text inside TextView is "Please click here to open this webpage". I want to show link for only the text "here". And I should open that webpage onclick of the text "here" but not on the anywhere of TextView.

Behemoth answered 20/4, 2012 at 12:35 Comment(0)
Z
40

Put a String in string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="txtCredits">Support: <a href="http://www.stackoverflow.com">click here</a></string>
</resources>

And you can use it in textView like this:

<TextView
        android:layout_width="fill_parent"
        android:id="@+id/text"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:linksClickable="true"
        android:text="@string/txtCredits" />

EDIT

For some reason above code does not work properly. So, add below code also,

TextView t2 = (TextView) findViewById(R.id.text);
t2.setMovementMethod(LinkMovementMethod.getInstance());

Important: Don't forget to remove autoLink="web" if you are calling setMovementMethod().

Zarf answered 20/4, 2012 at 12:44 Comment(3)
From my testing this doesn't actually make the hyperlink clickable. It styles it correctly (makes it blue with an underline) but you can't actually click it. It seems the only way is here: https://mcmap.net/q/45588/-how-to-make-links-in-a-textview-clickableTraumatize
tested on M, without .setMovementMethod(), i can see the hiperlink text underligned, without any action onClick, if I add .setMovementMethod() i don't see the hiperlink text anymore and of course, there is no action....funny businessLittle
Just remove this 2 line, android:autoLink="web" and android:linksClickable="true"....then it will work.Bombazine
C
9

Textviews are capable of displaying HTML, which solves your problem. Wrap what you want clickable in a hyperlink:

String html = "My link is <a href=\"http://google.com\">here</a>";
myTextView.setText(Html.fromHtml(html));
Custodian answered 20/4, 2012 at 12:41 Comment(3)
Do i need to set onClickListener for TextView in this case also ?Behemoth
This is about the worst possible approach I've seen, sorry. How's that string look as a resource, in XML? Linkify, ClickableSpan, android:autoLink. Pick your favorite, but don't use HTML like this.Greyson
From my testing this doesn't actually make the hyperlink clickable. It renders it correctly (makes it blue with an underline) but you can't actually click it. Setting the xml attributes linksClickable="true" and autoLink="true" have no effect either. Seems the only way to do this is here: https://mcmap.net/q/45588/-how-to-make-links-in-a-textview-clickableTraumatize
C
2

use simple Url in strings.xml :

<string name="autolink_val">Please Click Here : http://www.google.com</string>

And in Java code write this:

<TextView android:id="@+id/linkVal"   
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:autoLink="web" 
          android:text="@string/autolink_val1"/>`
Catastrophe answered 20/4, 2012 at 12:36 Comment(1)
android:autoLink="web" doesn't allow for a link that says "here"; it just allows the url itself to function as a link, as in: http://www.example.com/.Probative
M
1

Use HTML syntax in strings.xml:

<string name="test">Click &lt;a href="http://vtuhtan.info"&gt;here&lt;/a&gt;</string>

Set TextView properties to have links clickable and auto link.

TextView tv = findViewById(R.id.textView);
tv.setText(Html.fromHtml(getResources().getString(R.string.test)));
Molality answered 20/4, 2012 at 12:45 Comment(0)
I
1

You can test it with following code:

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="http://www.yahoo.com"
    android:autoLink="web"
    />
Impower answered 25/11, 2016 at 8:58 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.