Creating a hyperlink within a textview inside a fragment - android

I have looked through many of the threads on this site to find the solution to my problem but none seem to work. At the moment I am able to create a hyperlink while displaying the website eg - Please go here - www.google.com (The www.google.com is hyperlinked). What I am trying to do is have the link as - Please go here (Here is the link). Below is the code i have tried but once I remove the link itself, the 'here' still highlights like a link but has no function.
Strings.xml:
<string name="goog">Please go here</string>
fragment_home.xml:
<TextView
android:id="#+id/npd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:autoLink="web"
android:fontFamily="sans-serif-light"
android:linksClickable="true"
android:text="#string/npd"
android:textColorLink="#FF0000"
android:textSize="12dp" />
If i change 'here' for www.google.com within Strings.xml, the link takes me directly there. Has anyone been able to figure this problem out yet? Thanks in advance.

Try this and let me know is it what you are looking for
TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));

Related

android:autoLink is not working in ButtonView in Android?

I have used autolink in ButtonView like below,
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/email"
android:autoLink="email"
/>
if I used string like below I am able to go to email,
<string name="mail">abc#gmail.com</string>
But If I do like below, not happening,
<string name="mail">Send Mail</string>
That is the problemmm...
but nothing happened on clicking button...
When I used autolink for textView worked perfectly.. But why not working for Button???Thanks in advance
Hai Sandhiya you can use Linkify class to achieve your needs. try that one
Solved my problem when doing like below,
mailRedirectButton.setAutoLinkMask(0);
String content="<a href =mailto:abc#gmail.com>Send</a>";
mailRedirectButton.setText(Html.fromHtml(content));
mailRedirectButton.setMovementMethod(LinkMovementMethod.getInstance());
Referred here https://stackoverflow.com/a/33709981/12273964
Thank you for everyone who tried to help me..

Multiple clickable links in TextView

I'm trying to add a TextView with the classic you accept our terms and conditions and privacy polcy text with web links to the ToS and Privacy Policy but got stuck trying to get the links to work. I am able to create the links but they do nothing when clicked. I have tried many solutions, but none seem to work.
How would you go about making multiple links work properly?
Make sure to set the correct MovementMethod to make links clickable.
Java
textView.setMovementMethod(LinkMovementMethod.getInstance());
Kotlin
textView.movementMethod = LinkMovementMethod.getInstance()
You can add android:autoLink="web" in TextView attributes
<TextView
android:id="#+id/textview"
android:autoLink="web"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

Android - Ellipsize not working for a link in TextView

I'm a newbie to Android and I have looked at similar questions asked by others without a definite answer, since, I think, my problem is a bit different.
I'm using a TextView in my program in which there can be links, text, numbers etc. following is the TextView I'm using.
<TextView
android:id="#+id/viewText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:autoLink="web"
android:linksClickable="false"
android:ellipsize="end"
android:maxLines="7" />
Although this is working for normal texts, the ellipsize does not work whenever links are present in the TextView. I'm using "autoLink" in order to show the user that it is link but had set android:linksClickable to false. Right now, I've added the ellipsize from the code but I want to know whether I can do it from the XML file itself.
Thank you.

Why isn't the hyperlink clickable?

I'm writing an app that among other things displays HTML-formatted code in a TextView.
The problem I'm having is that although it does format the HTML to look as it should the hyperlinks included in the text are not clickable.
Anyone got any idea why?
This is what I've used:
contentText.setText("\n" + Html.fromHtml(HomeScreen.offer_description[offerSelected]));
contentText.setMovementMethod(LinkMovementMethod.getInstance());
And in the .xml files:
<TextView android:id="#+id/contentText"
android:autoLink="all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textColor="#color/black"/>
Any help would be great...thanks a lot!
which android api you are working on?
This code should do fine. (working for me atleast).
If not, try android:linksClickable="true" in the textView declaration

Android active link of url in TextView

I have getting dynamic text from a web service and showing the same in a TextView. Sometimes the TextView has url like hello. 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?
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);
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>
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
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 hello
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 hello";
TextView textView = view.findViewById(R.id.textView);
textView.setText(Html.fromHtml(text));
textView.setMovementMethod(LinkMovementMethod.getInstance());
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://");
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">'Google'</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>
In your XML, you need to add android:linksClickable="true" in the TextView.
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.
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 ...
Answer is right, BUT not complete, because I had in my xml some properties from other answers like autoLink and linksClickable and programatic way did not work. Also when I passes string with html from string resource also it did not work, so beware, you have to clean your xml and pass string directly exactly as in that answer.
String text = "click on hello";
TextView textView = view.findViewById(R.id.textView);
textView.setText(Html.fromHtml(text));
textView.setMovementMethod(LinkMovementMethod.getInstance());
I did not try it without without LinkMovementMethod but now I am ok as it finally work. Other answers did not work for me or was for visible url text, not clickable text as link.

Categories

Resources