TextViewに文字列があり、その文字列からサブ文字列をリンクしたいと思います。例えば:
詳細については、ここをクリックしてください。
文字列を動的に取得しています。だから私はそれがここをクリックしているかどうかを検索し、それをリンクに変換する必要があります。「ここをクリック」をリンクするにはどうすればよいですか。
テキスト内のパターンを見つけて置き換えるには、次を使用します。
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タグが正しくレンダリングされず、クリックできなくなります。
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タグを使用できます。この場合、リンクに使用されるタグ。
あなたはこのように試しましたか
<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));
String urlink = "http://www.google.com";
String link = "<a href=\"+urlink+ >link</a>";
textView.setText(Html.fromHtml(link));