Android 单个TextView中文字颜色,超链接等效果的设置

本文介绍如何利用SpannableString和HTML.fromHtml()方法在Android中为TextView内的文字添加不同样式,如高亮、超链接及颜色变化等,并通过示例代码展示了具体的实现过程。

一般在一个TextView中的字体颜色,效果都是统一的。

如果一段文字,前几个文字要显示高亮,中间部分一个超链接,后半部分自定义颜色。

简单点可能直接用3个textView来表示了。


因为上次做一个彩票的软件,对于双色球来说,大家都知道。

双色,那就有两种颜色。


很显然,这个效果,最后需要在一个TextView中完成。(当然也可以2个,红色和蓝色分开)。


然后我们第一反应是想到一个SpannableString这个类。

以下是网上copy过来一段代码:

[java]
  1. //创建一个SpannableString对象
  2. SpannableStringsp=newSpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");
  3. //设置超链接
  4. sp.setSpan(newURLSpan("http://www.baidu.com"),5,7,
  5. Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  6. //设置高亮样式一
  7. sp.setSpan(newBackgroundColorSpan(Color.RED),17,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  8. //设置高亮样式二
  9. sp.setSpan(newForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  10. //设置斜体
  11. sp.setSpan(newStyleSpan(android.graphics.Typeface.BOLD_ITALIC),27,29,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  12. //SpannableString对象设置给TextView
  13. myTextView.setText(sp);
  14. //设置TextView可点击
  15. myTextView.setClickable(true);
  16. myTextView.setMovementMethod(LinkMovementMethod.getInstance());

恩。一个不错的解决方式。

但是后来发现一个问题。

在对于SpannableString对象做整体操作时,我们对于里面的要设置的部分文字都是以截取方式,因此,也就是我们在构造这个

对象然后操作时,对于构造进去的String内容都是事先知道了。
那我这个开奖号码:双色球是7个数字,其他的就不一定了。而且还有一个问题,文字中我是带有空格的,
这使得在setxx对于索引起始位置定位比较困难。

后面了解了一个新方式:Html.fromHtml();
直接把文字组装成html文本。
代码:
[java]
  1. StringredNums=nums[0].replace(",","");
  2. StringblueNums=nums[1].replace(",","");
  3. StringBuildersb=newStringBuilder();
  4. sb.append("</font>");
  5. sb.append("<fontcolor='#ff00ff'>");
  6. sb.append(redNums);
  7. sb.append("</font>");
  8. sb.append("");
  9. sb.append("</font>");
  10. sb.append("<fontcolor='#0000cc'>");
  11. sb.append(blueNums);
  12. sb.append("");
  13. sb.append("</font>");
  14. Spannedspanned=Html.fromHtml(sb.toString());
  15. preNumView.setText(spanned);
效果就是上图那样的显示。

当然最后发现其实用SpannableString也能实现:
我构造两个SpannableString,一个红球,一个篮球的。
然后StringBuider组装下。适合在构造的SpannableString不是太多的情况下挺好的。

Html.fromHtml()这个api适合搞过网页开发的用户。本人没做过前端。对于几个标签都不是很熟悉。
而且适合设置大篇幅的版面文字,图片等资源。

转:http://www.linuxidc.com/Linux/2012-02/53144.htm

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值