Android中的SpannableString以及Pattern/Matcher的使用
来源:互联网 发布:淘宝换ipad电池 编辑:程序博客网 时间:2024/06/03 15:18
在Android中有一个类叫做SpannableString,它具有很强大的替换功能,可以设置各种Span的字符串,比如常用的可以将TextView、EditText等中的文本替换为相应的图片、表情等显示出来。他自身还有很多属性可以进行相应的设置修改,比较灵活。
这里介绍他的几个常用属性,以及使用方式。
//设置前景色
ForegroundColorSpan(Color.GREEN)
//设置背景色
BackgroundColorSpan(Color.BLACK)
//设置图片
ImageSpan(context,resId)
//设置删除线
StrikeThroughSpan
//设置下划线
UnderlineSpan
//单独设置字体的大小
AbsoluteSizeSpan(size)
AbsoluteSizeSpan(size,flag)//flag为true表示 设置的字体大小单位为sp
//单独设置字体的样式
StyleSpan(style)
实例如下:
String string="请输入替换内容";
//根据String创建一个SpannableString
SpannableString ss=new SpannableString(string);
ss.setSpan(new ForegroundColorSpan(Color.GREEN), 3, 5, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new BackgroundColorSpan(Color.BLACK), 0, 3, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new ImageSpan(this, R.drawable.ue404), 5, 6, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new AbsoluteSizeSpan(20, true), 3, 5, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
et.setError(ss);
return true;
一般我们在多次需要使用该替换功能时,一般我们可以写一个工具类,在工具类中对该方法进行封装,使用时直接传参数调用即可,例如下面即是将TextView中的文本替换为图片ImageSpan的封装
public static SpannableString getSpannableString(String string){
//把形如[emo]ue058这样的内容替换为一个IamgeSpan
//ImageSpan中显示的图像时R.drawable.ue058
SpannableString ss=new SpannableString(string);
//Pattern Matcher
Pattern pattern=Pattern.compile("\\[emo\\]ue[a-z0-9]{3}");
Matcher matcher=pattern.matcher(string);
while(matcher.find()){
int startIdx=matcher.start();
int endIdx=matcher.end();
String resId=matcher.group();
int id=MyApp.context.getResources().getIdentifier(resId.substring(5), "drawable", MyApp.context.getPackageName());
ss.setSpan(new ImageSpan(MyApp.context, id), startIdx, endIdx, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return ss;
}
在这里我们还使用到了Android提供的另外两个类,Pattern 和 Matcher,这两个类是Android官方提供给我们进行进行字符串筛选匹配使用的。它两个是搭配使用的,其中Pattern.compile("\\[emo\\]ue[a-z0-9]{3}")括号中的内容为正则表达式,对我们需要获取的字符串进行筛选匹配,这里是匹配形如[emo]ue058的字符串,matcher常用方法一共就四个,如下:
matcher.find();//返回true表示匹配成功,false表示无匹配项
matcher.start();//匹配项的开始位置
matcher.end();//匹配项的结束位置
matcher.group();//获取匹配的字符串
- Android中的SpannableString以及Pattern/Matcher的使用
- Java中Pattern和Matcher的理解以及简单使用
- android正则表达式及Pattern Matcher使用
- android正则表达式及Pattern Matcher使用
- android正则表达式及Pattern Matcher使用
- java中的pattern和matcher的用法
- 有关java中Pattern、Matcher的使用
- Java pattern & Matcher 的使用详解
- java 正则表达式(Pattern ,Matcher)的使用
- Pattern和Matcher的结合使用
- java中Matcher和pattern的使用
- android SpannableString的使用
- Android SpannableString的使用
- 正则表达式(Pattern和Matcher类的使用以及String类的分割功能)
- #Java中的Pattern和Matcher类的详解
- [Android基础]Pattern与Matcher
- Pattern和Matcher结合使用
- java的pattern类和matcher类的使用详解
- 嵌入式学习-uboot-lesson2-ARM相关知识
- Oracle 11g the account is locked问题的解决方法
- android面试题之触摸事件分发与处理简述
- 判断javasript对象总结
- linux中如何运行动程序
- Android中的SpannableString以及Pattern/Matcher的使用
- RGBA实现背景颜色透明
- java泛型使用的简单规则和限制
- sql 中的 and or 并用
- 关于eclipse 打包Strings文件引用错误 解决方法
- const在函数前与函数后的区别
- Java导出pdf表格
- iOS中集成ijkplayer视频直播框架
- UVa 11679 - Sub-prime