我在ListView
中使用TextView
组件。有时我在TextView
中的文本上有一个链接,我想通过点击它们来打开浏览器。我文本中的所有链接都有一个标签:
这是我的一个例子。这是链接
为此,我使用:
textView.setText(Html.fromHtml(someTextString));
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setAutoLinkMask(Linkify.WEB_URLS);
textView.setLinksClickable(true);
一切都很好,但如果我放一些文字:
这是一个示例文本。链接.thing
在这种情况下,link.thing
被选为链接。如何使<a></a>
标签之间的链接仅可点击?
添加
android:text="@string/Your_String_Contain"
现在这在中起着至关重要的作用
<string name="Your_String_Contain">This is an example of my text <a href="http://www.yourlink.com">This is link</a></string>
然后只需呼叫setMovementMethod
,
TextView Tv_App_Link=(TextView)findViewById(R.id.Your_Textview_Id);
Tv_App_Link.setMovementMethod(LinkMovementMethod.getInstance());
这样你就可以设置链接,它会自动找出链接
String myHtmlStr = "<a href=www.google.com>click here</a>";
setTextViewHTML(myTextView, myHtmlStr);
你可以实现这种的方法
protected void setTextViewHTML(TextView text, String html) {
CharSequence sequence = Html.fromHtml(html);
SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class);
for (URLSpan span : urls) {
makeLinkClickable(strBuilder, span);
}
text.setText(strBuilder);
}
protected void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span) {
int start = strBuilder.getSpanStart(span);
int end = strBuilder.getSpanEnd(span);
int flags = strBuilder.getSpanFlags(span);
TouchableSpan touchableSpan = new TouchableSpan() {
@Override
public void onClick(View widget) {
//your logic
}
};
touchableSpan.setURLSpan(span);
strBuilder.setSpan(touchableSpan, start, end, flags);
strBuilder.removeSpan(span);
}