1

我在 TextView 中有一个字符串,我想从该字符串中链接一个子字符串。例如:

点击这里了解更多。

我正在动态获取字符串。所以我必须搜索它是否有单击此处并将其转换为链接。如何链接“单击此处”。

4

4 回答 4

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())

此代码将在您的字符串中搜索并用链接替换所有“单击此处”。

最后,不要将 android:autoLink="web" 添加到您的 XML 资源(TextView 部分),否则 A 标记将无法正确呈现并且不再可点击。

于 2012-06-04T15:33:21.153 回答
1

Raghav 使用 fromHtml() 方法具有正确的方法,但是如果您正在搜索具有固定长度的字符串,您可以执行以下操作:

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 标记。在这种情况下,用于链接的标签。

于 2012-06-04T15:15:18.533 回答
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));
于 2012-06-04T14:51:01.447 回答
1
String urlink = "http://www.google.com";
String link = "<a href=\"+urlink+ >link</a>"; 
textView.setText(Html.fromHtml(link));
于 2012-06-04T14:55:15.083 回答