我有一個問題:如何在正常文本的文本塊中放置超鏈接?我有一些文本,並在文本中提到了一個URL,我希望這個URL使用不同的顏色,加下劃線和點擊。Android中的超鏈接
我知道在Android中的超鏈接,可以放置「Linkify」 .. 和我剛纔提到 android docs頁
考慮使用「機器人文檔」同上面的段落,我想在android系統顯示.... 。
我有一個問題:如何在正常文本的文本塊中放置超鏈接?我有一些文本,並在文本中提到了一個URL,我希望這個URL使用不同的顏色,加下劃線和點擊。Android中的超鏈接
我知道在Android中的超鏈接,可以放置「Linkify」 .. 和我剛纔提到 android docs頁
考慮使用「機器人文檔」同上面的段落,我想在android系統顯示.... 。
@Fedor .... 我發現該鏈接來自 API Demos。
該方法最後被用於在段落文本之間給出鏈接。
SpannableString ss = new SpannableString("text4: Click here
to dial the phone.");
ss.setSpan(new StyleSpan(Typeface.ITALIC), 0, 6,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new URLSpan("tel:4155551212"), 13, 17,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView t4 = (TextView) findViewById(R.id.TextView01);
t4.setText(ss);
t4.setMovementMethod(LinkMovementMethod.getInstance());
看看那個TextView underline phone number and hyperlink
但我可以看到Linkify不能提供你所需要的功能。沒問題,你可以手動實現它。只需添加ClickableSpans並單擊即可。此處的代碼示例http://www.orangeapple.org/?p=354。
雅這是正確的「Linkify」的WebURLs ... 但「Android的文檔」應爲紐帶,當這個鏈接,用戶點擊然後Tager的URL應該被開除,相同的HTML錨標籤 爲如。 Android Docs – 2010-07-08 13:46:57
還有一個辦法補充。 – Fedor 2010-07-08 16:37:46
thanx的答案.....真的很有幫助 – 2010-07-09 04:08:27
@PM - 我認爲你正在尋找爲Android定製linkify,我希望這將有助於你得到你想要http://android-geek.blogspot.com/2011/04/linkify-text-in-android.html
+1,亞巴拉特這個例子也是最好的。 – 2011-04-15 09:01:51
+1此解決方案適用,但我希望在android中創建簡單的超鏈接更簡單! – 2011-07-21 19:52:33
優秀的鏈接,我會盡快嘗試 – 2012-05-09 12:40:00
我知道這是一個老問題是什麼,但是這是一個問題我最近苦苦掙扎,並且沒有找到幫助我的StackOverflow答案。所以經過大量的實驗後,我找到了解決辦法,並認爲我會分享它的後代。
在strings.xml,使用HTML標籤和標記:
<string name="example"><![CDATA[I know hyperlinks in android can be placed with "Linkify".. and i have referred <a href="http://developer.android.com/reference/android/text/util/Linkify.html">android docs</a> page]]></string>
在你的XML,確保不添加任何特殊屬性。不要使用Android:自動連接
在Java代碼中,你必須使用fromHtml,Linkify和LinkMovementMethod。請務必LinkMovementMethod之前調用Linkify
exampleTextView.setText(Html.fromHtml(getString(R.string.example)));
Linkify.addLinks(exampleTextView, Linkify.WEB_URLS);
exampleTextView.setMovementMethod(LinkMovementMethod.getInstance());
另一個警告:如果您使用的這些HTML鏈接,其中一個鏈接具有不匹配的URL顯示文本(谷歌和www.google.com),不要放字符串中的原始URL。所以:
<string name="example"><![CDATA[www.google.com I know hyperlinks in android can be placed with "Linkify".. and i have referred <a href="http://developer.android.com/reference/android/text/util/Linkify.html">android docs</a> page]]></string>
會變成「www.google.com」到鏈接,但不會變成「機器人文檔」變成了鏈接。
這是非常令人沮喪,我要弄清楚,我嘗試了許多不同的組合,隨後許多網上的例子,其中沒有工作,直到我發現,只有上述正確的魔法組合。希望它可以幫助別人!
private void setTermsAndTextToClickable(TextView tandcTextView, String termsAndCon, String wordTohyperLink, String termsAndConUrl){
if (TextUtils.isEmpty(termsAndCon)){
tandcTextView.setVisibility(View.GONE);
return;
}
if (!TextUtils.isEmpty(termsAndCon) && !TextUtils.isEmpty(wordTohyperLink) && !TextUtils.isEmpty(termsAndConUrl)){
SpannableString ssString = new SpannableString(termsAndCon);
int startLoc = termsAndCon.indexOf(wordTohyperLink);
int endLoc = termsAndCon.indexOf(wordTohyperLink) + wordTohyperLink.length();
ssString.setSpan(new URLSpan(termsAndConUrl),startLoc,endLoc, 0);
tandcTextView.setText(ssString);
tandcTextView.setMovementMethod(LinkMovementMethod.getInstance());
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
// We display a Toast. You could do anything you want here.
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
}
};
ssString.setSpan(clickableSpan, startLoc, endLoc, 0);
}else{
tandcTextView.setText(termsAndCon);
}
}
我們可以設置一個本地化的spannablestring嗎? – Manohar 2012-07-24 16:47:43