TextView设置超链接的那些坑

给TextView设置超链接其实很简单,但是要实现不同的效果,可能就要采取不同的方法,这其中也许也还有一些小坑,鄙人刚刚趟了一遍,记录下来,供大家借鉴。

1. html设置超链接

这是最简单的一种方法了,在自己的string.xml里如下定义

<string name="baidu"><a href='www.baidu.com'>百度</a></string>

然后你的textview设置上这个字符串就可以了。
但是当你信心满满的运行程序,点击字符串的时候,发现并没有跳转!这是为什么??原来需要给你的textview在代码里做如下设置

textview.setMovementMethod(LinkMovementMethod.getInstance());

加上这句之后确实好使了,并且系统还给添加了下划线和颜色用来区别普通的文本,但是如果这时候我想给超链接换个颜色呢?So easy!看我的

<string name="baidu"><a href='www.baidu.com'><font color='#000'>百度</font></a></string>

这样直接修改html代码应该就可以了吧!
可惜,理想很丰满,现实太骨感!运行一下发现没有效果。。。
无奈,只能采取下面稍微复杂一点的办法了。

2.使用SpannableString设置超链接

TextView中可以通过使用SpannableString来实现TextView的丰富展示,比如加下划线、删除线、颜色、超链接甚至是添加图片,下面就让我们看看怎么弄吧!

SpannableString spannableString = new SpannableString(pro);
//设置文字颜色
spannableString.setSpan(new ForegroundColorSpan(Color.RED,0,10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置下划线
spannableString.setSpan(new UnderlineSpan(),0,10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置超链接
spannableString.setSpan(new URLSpan("https://www.baidu.com"),0,10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

这么设置完之后,发现文字确实有超链接效果了,点击也可以挑战,唯独颜色不能正确显示,这是为什么呢?难道设置颜色不好使?
于是我单独设置了一下文字颜色,发现是可以的。
那是为什么呢?原来是文字颜色和超链接冲突了,把设置文字颜色放到设置超链接后面就可以了。
最后别忘了

textView.setText(spannableString);
textview.setMovementMethod(LinkMovementMethod.getInstance());
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值