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是一个很强大的类,它还可以分段设计字体样式,如斜体、下划线、删除线、粗体以及加图片等样式,感兴趣的同学可以自行搜索学习,此处就不一一列举了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories