您的位置:首页 > 移动开发 > Android开发

Android使用SpannableString进行字符串的分段处理

2015-09-07 23:54 477 查看

Android使用SpannableString进行字符串的分段处理

最近进行Android项目开发的时候遇到了一个情景:



这是一个单选按钮后面跟一句选项描述。大家能看到,这段文字前面部分是黑色文字,但后面却跟着蓝色高亮的价格,换作你会怎么来实现这样的效果呢?可能跟我一样看到这个图想到的实现方法是(RadioButton+TextView),RadioButton实现前面单选按钮和紧跟着的黑色文字,TextView实现后面的高亮部分,其实这也不失为一种办法,可是还有没有更简单的方法实现这种效果呢?答案是,当然有。
SpannableString的出现,就解决了一段文字分段显示样式的问题。下面我们来看具体实现。


SpannableString ss = new SpannableString("SeaS$0.0");//创建一个SpannableString对象,并将要分段处理的字符串传进去
ss.setSpan(new ForegroundColorSpan(Color.BLACK), 0, 3,    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//这里设置前三个字母,也就是"Sae"的前景色为黑色
ss.setSpan(new ForegroundColorSpan(Color.parseColor("#FF369DDA")), 3, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置"S$0.0的颜色"
radioButton.setText(ss);


运行效果就如图所示啦


当然SpannableString的应用还不仅限于此,它不仅可以设置字体前景色,还可以设置背景色,比如如下图所示:



这也是个非常好的例子,在没有用到SpannableString之前,谁曾想到它居然只是一段文字的分段呈现!
我们接着来看代码实现:


SpannableString span = new SpannableString(" EZ  V Neck Simple Top");
span.setSpan(new BackgroundColorSpan(Color.parseColor("#ff57b060")), 0, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//设置EZ的背景色
span.setSpan(new ForegroundColorSpan(Color.WHITE), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//设置EZ前景色,也就是字体颜色
textView.setText(span);


短短几行代码,简化了编写布局和定义控件的繁琐步骤,只需要计算要实现的文字的位置和长度,就可以轻松的实现字符串分段显示的功能。
当然,正如前面所说,SpannableString是一个很强大的类,它还可以分段设计字体样式,如斜体、下划线、删除线、粗体以及加图片等样式,感兴趣的同学可以自行搜索学习,此处就不一一列举了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息