TextView中使用一个字符串替换字符串str中start到end的子字符串

简介:
sb.setSpan(new ReplacementSpan() {
				
				@Override
				public 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);
				}
				
				@Override
				public 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);


相关文章
|
Web App开发 安全 大数据
大数据问题排查系列-开启 kerberos 后无法访问 HIVESERVER2 等服务的 WEBUI
大数据问题排查系列-开启 kerberos 后无法访问 HIVESERVER2 等服务的 WEBUI
|
Android开发
Android基础知识:什么是Fragment?与Activity的区别是什么?
Android基础知识:什么是Fragment?与Activity的区别是什么?
2453 54
echarts圆环图设置legend数据对齐百分比样式使用rich富文本标签和formatter函数
echarts圆环图设置legend数据对齐百分比样式使用rich富文本标签和formatter函数
1396 0
|
供应链 安全 机器人
Python - 接入钉钉机器人
Python - 接入钉钉机器人
2277 0
Python - 接入钉钉机器人
|
XML API Android开发
Android 实现APP内应用更新功能(支持Android7.0以上)
Android 实现APP内应用更新功能(支持Android7.0以上)
1223 0
textarea去掉边框和取消选中后的边框
textarea去掉边框和取消选中后的边框
296 0
|
Android开发
Android TabLayout 加 ViewPager实现选项卡切换功能
今天讲一个很简单的功能,就是可以切换的选项卡功能,很多app都有类似这种效果,实现的方法也有很多,这里我采用TabLayout加上ViewPager来实现,这里我做了一个封装,相当于一个工具类来着,哪个地方需要用到都可以使用,使用上我的那个封装类就可以了。
361 0
Android TabLayout 加 ViewPager实现选项卡切换功能
错误: 程序包android.support.v7.app不存在 import android.support.v7.app.AppCompatActivity
错误: 程序包android.support.v7.app不存在 import android.support.v7.app.AppCompatActivity
532 0
|
Web App开发 网络协议 搜索推荐
完美修复google翻译失效的问题
使用chrome的小伙伴应该都知道有个页面一键翻译,对于英语相当蹩脚的我来说灰常好用,然而…
359 0