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

转载 2012年03月29日 13:33:25

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

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

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


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

双色,那就有两种颜色。

 

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


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

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

[java]
  1. //创建一个 SpannableString对象     
  2.       SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");    
  3.       //设置超链接     
  4.       sp.setSpan(new URLSpan("http://www.baidu.com"), 57,    
  5.               Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
  6.       //设置高亮样式一     
  7.       sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
  8.       //设置高亮样式二     
  9.       sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);      
  10.       //设置斜体     
  11.       sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 2729, 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.               String redNums = nums[0].replace(","" ");  
  2. String blueNums = nums[1].replace(","" ");  
  3. StringBuilder  sb = new StringBuilder();  
  4. sb.append("</font>");  
  5. sb.append("<font color='#ff00ff'>");  
  6. sb.append(redNums);  
  7. sb.append("</font>");  
  8. sb.append(" ");  
  9. sb.append("</font>");  
  10. sb.append("<font color='#0000cc'>");  
  11. sb.append(blueNums);  
  12. sb.append(" ");  
  13. sb.append("</font>");  
  14. Spanned spanned = Html.fromHtml(sb.toString());  
  15. preNumView.setText(spanned);  
效果就是上图那样的显示。

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

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

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

android:TextView中的文本链接之--设置超链接、颜色、字体等属性

mTextView = (TextView)findViewById(R.id.myTextView);  //创建一个 SpannableString对象  msp = new Spannabl...
  • kongxiuqi
  • kongxiuqi
  • 2016年09月20日 15:47
  • 1070

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

From:http://blog.csdn.net/nono_love_lilith/article/details/7185193
  • MaximusKiang
  • MaximusKiang
  • 2014年07月08日 14:51
  • 609

设置TextView中超链接字体颜色、下划线

ClickableSpan:这是超链接相关的样式控制和点击事件的控制类,我们需要对它进行继承,然后修改成我们需要的样式。其中,可以对超链接文本字符进行颜色、字体大小、字体、下划线、点击事件的自定义控制...
  • fwt336
  • fwt336
  • 2016年07月08日 09:52
  • 1087

Android TextView中文字通过SpannableString来设置超链接、颜色、

转载自 https://my.oschina.net/wangguolongnk/blog/108406 在Android中,TextView是我们最常用的用来显示文本的控件。   一般情况下,T...
  • jhl122
  • jhl122
  • 2016年09月20日 19:43
  • 118

Android TextView中文字设置超链接、颜色、字体

参考:http://blog.chinaunix.net/uid-20665441-id-760497.html TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接...
  • iloveaman
  • iloveaman
  • 2015年10月27日 10:58
  • 257

设置TextView中文字的超链接

main.xml如下:
  • lfdfhl
  • lfdfhl
  • 2013年02月25日 20:26
  • 1607

给TextView添加超链接的四种方式

因为在上上篇博客中介绍了SpannableString的使用(SpannableString使用详解),由此想到给TextView添加超链接究竟有多少种方式?经过个人总结,现在一共发现四种,如果还有其...
  • u012702547
  • u012702547
  • 2015年11月19日 23:07
  • 10249

TextView使部分文字具有超链接(或点击)功能

主要对TextView中的部分字符串进行处理,使之具有点击效果,而且可以对该部分字符串颜色大小进行设置等。...
  • liuweiweiwei
  • liuweiweiwei
  • 2017年03月15日 22:30
  • 1209

Android TextView富文本、超链接和添加文字背景等其他效果的实现

TextView除了显示常规的文本之外haineeng
  • a462464126
  • a462464126
  • 2014年04月11日 14:01
  • 2181

为 TextView 的部分文字设置超链接样式并监听点击事件

TextView的部分文字设置超链接样式并监听点击事件 修改TextView中部分文字的颜色 flags对一段文字设置一些标识TextView的部分文字设置超链接样式并监听点击事件 package c...
  • lgy64422575
  • lgy64422575
  • 2015年12月30日 10:01
  • 849
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 单个TextView中文字颜色,超链接等效果的设置
举报原因:
原因补充:

(最多只允许输入30个字)