Android:textview超链接

我知道,如果你把一个链接在一个文本视图,它将工作,但如果我想显示例如:

谷歌stackoverflow

而不是整个链接(只是标签)如何使这些链接点击?

你可以有两个独立的TextView,你可以根据需要在你的布局中alignment它们:

Text1.setText( Html.fromHtml( "<a href=\"http://www.google.com\">google</a> ")); Text1.setMovementMethod(LinkMovementMethod.getInstance()); Text2.setText( Html.fromHtml( "<a href=\"http://www.stackoverflow.com\">stackoverflow</a> ")); Text2.setMovementMethod(LinkMovementMethod.getInstance()); 

那么如果你想剥离“链接下划线”。 创build一个类:

 public class URLSpanNoUnderline extends URLSpan { public URLSpanNoUnderline(String url) { super(url); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); } } 

然后将此方法添加到具有TextView的主Activity类中

 private void stripUnderlines(TextView textView) { Spannable s = new SpannableString(textView.getText()); URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class); for (URLSpan span: spans) { int start = s.getSpanStart(span); int end = s.getSpanEnd(span); s.removeSpan(span); span = new URLSpanNoUnderline(span.getURL()); s.setSpan(span, start, end, 0); } textView.setText(s); } 

然后在初始化TextViews(在你的onCreate中)之后调用它:

 stripUnderlines(Text1); stripUnderlines(Text2); 
 TextView t2 = (TextView) findViewById(R.id.textviewidname); t2.setMovementMethod(LinkMovementMethod.getInstance()); 

 <string name="google_stackoverflow"><a href="https://stackoverflow.com/questions/9852184/android-textview-hyperlink?rq=1">google stack overflow</a></string> 

链接是“ Android:textview超链接 ”

和标签是“谷歌堆栈溢出”

在你的java中定义第一个代码块,在你的strings.xml文件中定义第二个代码块。 另外,一定要从你的页面布局中引用textView的id。

非常简单的方法来做到这一点—

在你的活动中

  TextView tv = (TextView) findViewById(R.id.site); tv.setText(Html.fromHtml("<a href=http://www.stackoverflow.com> STACK OVERFLOW ")); tv.setMovementMethod(LinkMovementMethod.getInstance()); 

那么你会得到只是标签,而不是整个链接..

希望它能帮助你…

如果你的HTML中有完整的链接, android:autoLink="web"就可以工作。 以下内容将以蓝色和可点击的forms突出显示:

这应该工作。

 TextView t2 = (TextView) findViewById(R.id.text2); t2.setMovementMethod(LinkMovementMethod.getInstance()); and <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/txtCredits" android:id="@+id/text2" android:layout_centerInParent="true" android:layout_marginTop="20dp"></TextView> 

这是我的工作实施

 private void showMessage() { lblMessage.setText(""); List<String> messages = db.getAllGCMMessages(); for (int k = messages.size() - 1; k >= 0; --k) { String message = messages.get(k).toString(); lblMessage.append(message + "\n\n"); } Linkify.addLinks(lblMessage, Linkify.ALL); } 

并改变超链接的颜色,我编辑我的XML文本视图 –

  android:textColorLink="#69463d" 

我遇到了同样的问题,最终find了工作解决scheme。

  1. 在string.xml文件中,定义:

     <string name="textWithHtml">The URL link is &lt;a href="http://www.google.com">Google&lt;/a></string> 

用HTML转义字符replace“<”小于字符。

  1. 在Java代码中:

     String text = v.getContext().getString(R.string.textWithHtml); textView.setText(Html.fromHtml(text)); textView.setMovementMethod(LinkMovementMethod.getInstance()); 

TextBox将正确地显示带有可点击的锚点链接的文本