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

来源:互联网 发布:阿里云空间 客户端 编辑:程序博客网 时间:2024/04/30 15:36
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
原创粉丝点击