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 に答える