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。
-
在string.xml文件中,定义:
<string name="textWithHtml">The URL link is <a href="http://www.google.com">Google</a></string>
用HTML转义字符replace“<”小于字符。
-
在Java代码中:
String text = v.getContext().getString(R.string.textWithHtml); textView.setText(Html.fromHtml(text)); textView.setMovementMethod(LinkMovementMethod.getInstance());
TextBox将正确地显示带有可点击的锚点链接的文本