TextView中文字设置超链接、颜色、字体

如果文本超链接地址显示的是网址,则可以直接给对应的textview设置属性  autolink="web"(其实还可以设置很多)

 

PS:

 自动识别链接:

     <!-- android:autoLink="web"-设置自动识别链接,值web为匹配Web网址 -->

     <!--android:autoLink="phone"-设置自动识别链接,值phone为匹配电话号码 -->

     <!-- android:autoLink="email"-设置自动识别链接,值email为匹配Email地址 -->

     <!-- android:autoLink="all"-设置自动识别链接,值all为匹配所有 -->

当然在清单文件里面要注册相对应的权限。

如果文本超链接地址显示的不是网址,就需要用到Spannable对象,可以借助Spannable对象实现以TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,功能强大。效果如下:

代码如下:

 1 package com.zhou.activity;
 2 
 3 import android.app.Activity;
 4 import android.graphics.Color;
 5 import android.os.Bundle;
 6 import android.text.Spannable;
 7 import android.text.SpannableString;
 8 import android.text.Spanned;
 9 import android.text.method.LinkMovementMethod;
10 import android.text.style.BackgroundColorSpan;
11 import android.text.style.ForegroundColorSpan;
12 import android.text.style.StyleSpan;
13 import android.text.style.URLSpan;
14 import android.widget.TextView;
15 
16 public class TextViewLinkActivity extends Activity {
17     TextView myTextView;
18     @Override
19     public void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.main);
22         myTextView = (TextView) this.findViewById(R.id.myTextView);
23         
24         //创建一个 SpannableString对象
25         SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");
26         //设置超链接
27         sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,
28                 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
29         //设置高亮样式一
30         sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
31         //设置高亮样式二
32         sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  
33         //设置斜体
34         sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
35         //SpannableString对象设置给TextView
36         myTextView.setText(sp);
37         //设置TextView可点击
38         myTextView.setMovementMethod(LinkMovementMethod.getInstance());
39     }
40 }

 

 

posted @ 2014-03-14 09:48  寡蛋  阅读(561)  评论(0)    收藏  举报