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.
Autolink inside a TextView in android
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()
.
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-clickable –
Traumatize
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 business –
Little
Just remove this 2 line, android:autoLink="web" and android:linksClickable="true"....then it will work. –
Bombazine
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));
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-clickable –
Traumatize 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"/>`
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 Use HTML syntax in strings.xml:
<string name="test">Click <a href="http://vtuhtan.info">here</a></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)));
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"
/>
© 2022 - 2024 — McMap. All rights reserved.