標籤:
總結起來大概有5種做法:
1.當文字中出現URL、E-mail、電話號碼等的時候,可以將TextView的android:autoLink屬性設定為相應的的值, 如 果是所有的類型都出來就是android:autoLink="all"。當然也可以在java代碼裡 做,textView01.setAutoLinkMask(Linkify.ALL);
2.將要處理的文字寫到一個資源檔,如string.xml,然後的java代碼裡引用(直接寫在代碼了是不可行的,會直接把文字都顯示處理)
3.用Html類的fromHtml()方法格式化要放到TextView裡的文字 4.設定TextView的Paint屬性:tvTest.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //底線
5.用Spannable或實現它的類,如SpannableString來格式,部分字串。 另外附上一篇部落格介紹:Android TextView中文字通過SpannableString來設定超連結、顏色、字型等屬性 如果是在資源檔裡:1、字串資源中設定底線屬性
<resources> <string name="hello"><u>phone:0123456</u></string> <string name="app_name">MyLink</string></resources>
直接讓TextView引用字串資源的name即可。
2、TextView設定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>"));
// 在單擊連結時凡是有要執行的動作,都必須設定MovementMethod對象
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 ForegroundColorSpan(Color.RED), sp.getSpanStart(url),
sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//設定前景色彩為紅色
}
tv.setText(style);
}
另外一篇文章中有幾個具體的執行個體可以參考:
http://hunankeda110.iteye.com/blog/1420470
Android TextView 添加底線的幾種方式