给TextView添加超链接

1.直接在xml文件中配置autoLink属性

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

2.使用HTML语言

我们知道TextView可以直接显示转换后的HTML,那么借助H5开发经验,我们知道网页中的超链接也可以在TextView中打开,如下:

tv1.setText(Html
                .fromHtml("<a href='tel:18565554482'>打电话a>,<a href='smsto:18565554482'>发短信a>,<a href='mailto:[email protected]'>发邮件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:[email protected]'>发邮件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使用详解,我们这里就再次重复一下使用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:[email protected]"), 8, 11,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        ss.setSpan(new URLSpan("http://www.baidu.com"), 12, 16,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv3.setText(ss);
        tv3.setMovementMethod(LinkMovementMethod.getInstance());

你可能感兴趣的:(给TextView添加超链接)