android:在TextView中设置与<a href>的链接

Tvd*_*Tvd 16 html android hyperlink textview

我动态创建TextView并希望将文本设置为可链接.文字值为" Google ".我提到了像这样的互联网和博客,它以同样的方式显示,但我无法产生预期的结果.

我尝试了不同的方法,但我看到的输出是仅包含文本的整个文本.我试过的代码是:

TextView tv1 = new TextView(this);
tv1.setLayoutParams(textOutLayoutParams);
// Make Linkable
tv1.setMovementMethod(LinkMovementMethod.getInstance());
tv1.setText(Html.fromHtml(l.getLeftString()));

/*SpannableString s = new SpannableString(l.getLeftString());
Linkify.addLinks(s, Linkify.WEB_URLS);
tv1.setText(s);                 
tv1.setMovementMethod(LinkMovementMethod.getInstance());
*/
dialogLayout.addView(tv1);
Run Code Online (Sandbox Code Playgroud)

在我的输出中,我看到" 谷歌 ",没有链接.我也尝试过清洁项目并再次构建它,但没有成功.我希望只有"Google"标有蓝色下划线(默认情况下),点击Google后,浏览器会打开http://google.com.

我的代码缺少什么来获得输出?BTW For REF:我使用64位Win 7,Java,Eclipse,Android API 8-2.2

任何帮助都非常感谢.

Tvd*_*Tvd 39

我终于使用以下代码了解它:

TextView tv1 = new TextView(this);
tv1.setLayoutParams(textOutLayoutParams);
tv1.setText(Html.fromHtml("<a href=\""+ l.getRightString() + "\">" + l.getLeftString() + "</a>"));
tv1.setClickable(true);
tv1.setMovementMethod (LinkMovementMethod.getInstance());
dialogLayout.addView(tv1);
Run Code Online (Sandbox Code Playgroud)

l.getRightString() - 包含一个像http:\ www.google.com l.getLeftString()的网址 - 包含"Go to Google"等网址的文字

结果:在我的对话框中用蓝色和带下划线的文本"转到谷歌",点击它后,浏览器打开并显示相应的页面.在返回/退出浏览器时,它再次从它离开的状态进入应用程序.

希望这可以帮助.

  • 重要.不要设置android:autoLink ="web",因为它不起作用! (16认同)
  • @DawidDrozd确实非常重要.谢谢你的伴侣,你让我免于自杀:) (4认同)

Squ*_*ire 12

将html保存在字符串中

<string name="link">&lt;a href="http://www.google.com">Google&lt;/a></string>
Run Code Online (Sandbox Code Playgroud)

将textview ID设置为

textViewLinkable
Run Code Online (Sandbox Code Playgroud)

在主要活动中使用以下代码:

((TextView) findViewById(R.id.textViewLinkable)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView) findViewById(R.id.textViewLinkable)).setText(Html.fromHtml(getResources().getString(R.string.link)));
Run Code Online (Sandbox Code Playgroud)


Gan*_*gam 6

我也面临着我使用以下解决的相同问题

String str_text = "<a href=http://www.google.com >Google</a>";
TextView link;
link = (TextView) findViewById(R.id.link);
link.setMovementMethod(LinkMovementMethod.getInstance());
link.setText(Html.fromHtml(str_text));
Run Code Online (Sandbox Code Playgroud)

用于将链接颜色更改为蓝色使用

link.setLinkTextColor(Color.BLUE);
Run Code Online (Sandbox Code Playgroud)


小智 6

这是我在Android N上测试的简单实现.

String termsText = "By registering, you are agree to our";
String termsLink = " <a href=https://www.yourdomain.com/terms-conditions.html >Terms of Service</a>";
String privacyLink = " and our <a href=https://www.yourdomain.com/privacy-policy.html >Privacy Policy</a>";
String allText = termsText + termsLink + privacyLink;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    ((TextView) findViewById(R.id.text_terms_conditions)).setMovementMethod(LinkMovementMethod.getInstance());
    ((TextView) findViewById(R.id.text_terms_conditions)).setText(Html.fromHtml(allText, Html.FROM_HTML_MODE_LEGACY));
} 
else {
    ((TextView) findViewById(R.id.text_terms_conditions)).setMovementMethod(LinkMovementMethod.getInstance());
    ((TextView) findViewById(R.id.text_terms_conditions)).setText(Html.fromHtml(allText));
}
Run Code Online (Sandbox Code Playgroud)