我在TextView中有一个String,我想从该字符串链接一个子串。例如:
点击此处了解详情。
我正在动态获取字符串。所以我必须搜索是否点击此处并将其转换为链接。如何链接“点击此处”。
答案 0 :(得分:2)
要在文本中查找模式并替换它,请使用:
Pattern p = Pattern.compile("click here");
Matcher m = p.matcher("for more info, click here");
StringBuffer sb = new StringBuffer();
boolean result = m.find();
while(result) {
m.appendReplacement(sb, "<a href=\"www.mywebsite.com\">click here</a>");
result = m.find();
}
m.appendTail(sb);
String strWithLink = sb.toString();
yourTextView.setText(Html.fromHtml(strWithLink));
yourTextView.setMovementMethod(LinkMovementMethod.getInstance())
此代码将在您的字符串中搜索,并用链接替换所有“click here”。
最后,不要将android:autoLink =“web”添加到XML资源(部分TextView),否则A-tags将无法正确呈现且无法再点击。
答案 1 :(得分:1)
你的尝试是这样吗
<a href="www.mywebsite.com">Click here</a>
将其设置为textview
//通过supstring
获取此信息String whatever="anything dynamically";
String desc = "what you want to do is<a href='http://www.mysite.com/'>"+whatever+":</a>";
yourtext_view.setText(Html.fromHtml(desc));
答案 2 :(得分:1)
String urlink = "http://www.google.com";
String link = "<a href=\"+urlink+ >link</a>";
textView.setText(Html.fromHtml(link));
答案 3 :(得分:1)
Raghav使用fromHtml()方法有正确的方法,但是如果你要搜索具有固定长度的String,你可以这样做:
String toFind = "click here";
if(myString.indexOf(toFind) > -1){
String changed = myString.substring(0, myString.indexOf(toFind)) + "<a href='http://url.whatever'>" + myString.substring(myString.indexOf(toFind), myString.indexOf(toFind) + toFind.length()) + "</a>" + myString.substring(myString.indexOf(toFind) + toFind.length());
}
else {
//String doesn't contain it
}
设置实际文本时,需要使用:tv.setText(Html.fromHtml(yourText));否则它只会显示为没有任何添加剂的字符串。 fromHtml()方法允许您在应用程序中使用某些HTML标记。在这种情况下,标签用于链接。