给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: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使用详解,我们这里就再次重复一下使用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);
        tv3.setText(ss);
        tv3.setMovementMethod(LinkMovementMethod.getInstance());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值