一共有五种方式:推荐第四种、第五种

1. 直接在xml文件中配置autoLink属性(简单易用,效果单一)

autoLink属性一共有六个值,分别是none(正常),web(将文本识别为一个网址),phone(将文本识别为一个电话号码),mail(将文本识别为一个邮件地址),map(这个,呃,该怎么表述呢?会打开地图应用),all(根据文本自动识别)。一般情况下我们设置为all即可,我们看看,这个时候它就会自动将TextView中的电话号码、邮件地址、网页链接等识别出来,这中方式是最简单的一种。如:

<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:autoLink="all"
        android:text="
        android:textSize="16dp" />

2. 使用HTML语言

我们知道TextView可以直接显示转换后的HTML,那么借助H5开发经验,我们知道网页中的超链接也可以在TextView中打开,如下:
只要我们写好协议,这个其实也很简单。

  tv1.setText(Html.fromHtml("<a href='tel:18565554482'>打电话</a>,<a href='smsto:18565554482'>发短信</a>,<a href='mailto:584991843@qq.com'>发邮件</a>,<a href='http://www.baidu.com'>Go百度</a>"));  
    tv1.setMovementMethod(LinkMovementMethod.getInstance());  

3. 在strings.xml中直接写HTML,然后在TextView的xml中直接引用即可(跟第二种换汤不换药)

strings.xml中的定义如下:

<string name="tv4"><a href='tel:18565554482'>打电话</a>,<a href='smsto:18565554482'>发短信</a>,<a href='mailto:584991843@qq.com'>发邮件</a>,<a href='http://www.baidu.com'>Go百度</a></string> 

TextView的XML定义如下:
<TextView  
        android:id="@+id/tv4"  
        android:layout_width="match_parent"  
        android:layout_height="48dp"  
        android:gravity="center"  
        android:text="@string/tv4"  
        android:textSize="24sp" >  
    </TextView>  
然后只需要在Activity中设置该TextView为可点击状态即可:
tv4.setMovementMethod(LinkMovementMethod.getInstance()); 

4. 使用SpannableString实现超链接(效果多样)

关于SpannableString的更多使用,参见另一篇:

SpannableString ss = new SpannableString("打电话,发短信,发邮件,Go百度");  
ss.setSpan(new URLSpan("tel:18565554482"), 0, 3,  
        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
ss.setSpan(new URLSpan("smsto:18565554482"), 4, 7,  
        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
ss.setSpan(new URLSpan("mailto:584991843@qq.com"), 8, 11,  
        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
ss.setSpan(new URLSpan("http://www.baidu.com"), 12, 16,  
        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
//SpannableString对象设置给TextView  
tv3.setText(ss);  
//设置TextView可点击  
tv3.setMovementMethod(LinkMovementMethod.getInstance()); 

5. 使用SpannableTextView实现(效果多样)

设置单一效果:

 // Setup single span
SpannableTextView tv1 = (SpannableTextView) view.findViewById(R.id.tv1);
Span span1 =
        new Span.Builder("ForegroundSpan, BackgroundSpan, and CustomTypefaceSpan")
                .foregroundColor(R.color.purple_500)
                .backgroundColor(R.color.green_500)
                .typeface(mItalicFont)
                .build();
tv1.setFormattedText(span1);

设置多重效果叠加:
// Setup multiple spans
SpannableTextView tv2 = (SpannableTextView) view.findViewById(R.id.tv2);
List<Span> spans1 = new ArrayList<>();
spans1.add(new Span.Builder("ForegroundSpan")
        .foregroundColor(R.color.red_500)
        .build());
spans1.add(new Span.Builder("BackgroundSpan")
        .backgroundColor(R.color.yellow_500)
        .build());
spans1.add(new Span.Builder("ForegroundSpan and BackgroundSpan")
        .foregroundColor(R.color.orange_500)
        .backgroundColor(R.color.blue_500)
        .build());
spans1.add(new Span.Builder("ForegroundSpan, BackgroundSpan, and CustomTypefaceSpan")
        .foregroundColor(R.color.green_500)
        .backgroundColor(R.color.indigo_500)
        .typeface(mRegularFont)
        .build());
tv2.setFormattedText(spans1);

实现无下划线超链接:

自定义的urlspan 继承URLSpan 去掉下划线
    //自定义urlspan 去掉下划线 
    public class URLSpanNoUnderline extends URLSpan {
        public URLSpanNoUnderline(String url) {
            super(url);
        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
            ds.setColor(Color.BLACK);
                    一共有五种方式:推荐第四种、第五种1. 直接在xml文件中配置autoLink属性(简单易用,效果单一)autoLink属性一共有六个值,分别是none(正常),web(将文本识别为一个网址),phone(将文本识别为一个电话号码),mail(将文本识别为一个邮件地址),map(这个,呃,该怎么表述呢?会打开地图应用),all(根据文本自动识别)。一般情况下我们设置为all即可,我们看看,
				
TextView超链接可以通过几种方式实现: 一、Html.fromHtml方式 TextView,本身就支持部分的Html格式标签。这其包括常用的字体大小颜色设置,文本链接等。使用起来也比较方便,只需要使用Html类转换一下即可: textView.setText(Html.fromHtml(str)); 代码如下: public class Test10Activity extends Activity { TextView textView ; @Override protected void onCreate(Bundle savedInstanceState)
1、 使用android:autoLink="all" 只需在TextView加入这个属性,而在TextView里面写的文字包含网址、电话、email的会自动加入连接地址。  android:id="@+id/text1"  android:layout_width="match_parent"  android:layout_height="match_parent"
TextView超链接可以通过几种方式实现:1.Html.fromHtml,2.Spannable,3.Linkify.addLinks。下面分别进行测试,包括 修改字体样式,下划线样式,点击事件等。 Html.fromHtml方式 TextView,本身就支持部分的Html格式标签。这其包括常用的字体大小颜色设置,文本链接等。使用起来也比较方便,只需要使用Html类转换一下即可: te
应用场景: 现在基本上每款APP登录注册页面,都会有这段文本,使用该软件,即表示您同意该软件的使用条款和隐私政策,现希望当点击“使用条款”或“隐私政策”时可以跳转到相应的说明页面。这个时候就需要用到SpannableString富文本,实现点击文本跳转的功能。 SpannableString可以通过使用setSpan方法实现字符串各种形式风格的显示。 1.使用setText设置字体 tv_privacy.setText(getClickableSpan()); //设置文本可点 tv_privacy.set
public abstract class TopicSpanWrapper extends ClickableSpan { protected Context mContext; protected TextView mTextView; * @param context * @param tv public TopicSpanWrapper(Context context, TextView tv) {
1、通过android:autoLink属性来实现TextView文本相应类型的链接进行自动识别。 例如:android:autoLink= all 可以自动识别TextView文本的网络地址,邮件地址,电话号码,地图位置等,并进行链接android:autoLink所有支持的链接属性取值如下: android:id="@+id/myTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:textSize="20sp" /> 在代码,你可以使用以下代码来设置文本大小: TextView myTextView = findViewById(R.id.myTextView); myTextView.setTextSize(20);