TextView中使用一个字符串替换字符串str中start到end的子字符串(终极版)
来源:互联网 发布:java base64 中文乱码 编辑:程序博客网 时间:2024/05/16 05:12
转载请注明出处,谢谢!
我之前写过一篇textview字符串替换的文章,但是那个并不完善,例如会有接不上的现象,在某些机型上会出现重叠等等
下面是我彻底解决这些问题的方案
sb.setSpan(new ReplacementSpan() {@Overridepublic int getSize(Paint paint, CharSequence text, int start, int end,FontMetricsInt fm) {//最后一个参数为end-1,防止这个span最后与下一个字符之间有空格if (fm != null) {paint.getFontMetricsInt(fm);}return (int) paint.measureText(text, start, end);}@Overridepublic void draw(Canvas canvas, CharSequence text, int start, int end,float x, int top, int y, int bottom, Paint paint) {// String newText = "****" + text.toString().substring(start + 4, end); paint.setUnderlineText(true); paint.setColor(linkColor); canvas.drawText("****", 0, end - start, x, y, paint);}}, start, start + 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);在画这个span之前要先设置覆盖的那几个字符typeface是monospace(等宽字符)的,不然就会出现空格、重叠等现象
代码如下:
sb.setSpan(new TypefaceSpan("monospace"), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);里面传入的变量同学们可以根据自己的需求做相应的修改
0 0
- TextView中使用一个字符串替换字符串str中start到end的子字符串(终极版)
- TextView中使用一个字符串替换字符串str中start到end的子字符串
- TextView中使用一个字符串替换字符串str中start到end的子字符串
- 使用str.insert(),将字符串插入到字符序列中.
- 从字符串str中删除子字符串substr
- 在一个字符串中提取子字符串
- 统计一个字符串中出现的子字符串的个数
- 字符串中替换第一次出现的字符串
- 求一个字符串中出现另一子字符串的次数
- 替换字符串中所有子串
- 在ActionScript中替换子字符串
- 正则式:找出字符串中第一个以”S“打头,到”E“结尾的子字符串,并替换成”ABC“。
- 替换子字符串(将字符串中的某个子字符串替换为给定的字符串)
- python中字符串str的strip()方法
- python中字符串str的strip()方法
- C语言中替换字符串中的子字符串(WIN)
- C++字符串中查找子字符串并替换
- std::string字符串中替换子串的函数
- ORA-481 DRM同步超时导致lmon将实例中止
- 符合规范进
- 人托人
- 亲,消防喊你来点“料”
- 高特温特容颜
- TextView中使用一个字符串替换字符串str中start到end的子字符串(终极版)
- stringbuffer与stringbuilder的
- zoj2136 最长上升子序列LIS O(NlgN)解法
- nodejs资源
- windows API CreateDirectory和RemoveDirectory函数
- NSdate to int
- 也谈代码中注释的问题
- Oracle课程里关于计算时间差的问题
- VB EXCEL 2007 TO 2003