總結(jié)起來(lái)大概有5種做法:
將要處理的文字寫(xiě)到一個(gè)資源文件酒觅,如string.xml(使用html用法格式化)
當(dāng)文字中出現(xiàn)URL肃续、E-mail煤杀、電話號(hào)碼等的時(shí)候汇陆,可以將TextView的android:autoLink屬性設(shè)置為相應(yīng)的的值,如果是所有的類型都出來(lái)就是**android:autoLink="all"宦搬,
當(dāng)然也可以在java代碼里 做,textView01.setAutoLinkMask(Linkify.ALL); **用Html類的fromHtml()方法格式化要放到TextView里的文字 ,與第1種一樣劫拗,只是是用代碼動(dòng)態(tài)設(shè)置
設(shè)置TextView的Paint屬性:tvTest.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下劃線
用Spannable或?qū)崿F(xiàn)它的類间校,如SpannableString來(lái)格式部分字符串。
另外附上一篇博客介紹:Android TextView中文字通過(guò)SpannableString來(lái)設(shè)置超鏈接页慷、顏色憔足、字體等屬性
如果是在資源文件里:
1、字符串資源中設(shè)置下劃線屬性
<resources>
<string name="hello"><u>phone:0123456</u></string>
<string name="app_name">MyLink</string>
</resources>
直接讓TextView引用字符串資源的name即可酒繁。
2滓彰、TextView設(shè)置autoLink屬性
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:autoLink="all"
android:text="@string/link_text_auto" />
如果是代碼里:
1、使用Html.fromHtml()
TextView textView = (TextView)findViewById(R.id.tv_test);
textView.setText(Html.fromHtml("<u>"+"0123456"+"</u>"));
2州袒、使用TextView的Paint的屬性
tvTest.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下劃線
tvTest.getPaint().setAntiAlias(true);//抗鋸齒
3揭绑、使用SpannableString類
SpannableString content = new SpannableString(str);
content.setSpan(new UnderlineSpan, 0, str.length(), 0);
代碼里面自定義超鏈接樣式:
TextView tv=new TextView(this);
tv.setText(Html.fromHtml("<a href=\"http://blog.csdn.net/CAIYUNFREEDOM\">自定義的超鏈接樣式</a>"));
// 在單擊鏈接時(shí)凡是有要執(zhí)行的動(dòng)作,都必須設(shè)置MovementMethod對(duì)象
tv.setMovementMethod(LinkMovementMethod.getInstance());
CharSequence text = tv.getText();
if (text instanceof Spannable){
int end = text.length();
Spannable sp = (Spannable)tv.getText();
URLSpan[] urls = sp.getSpans( 0 , end, URLSpan.class );
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans(); // should clear old spans
for (URLSpan url : urls){
URLSpan myURLSpan= new URLSpan(url.getURL());
style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new//設(shè)置前景色為紅色
}
tv.setText(style);