258
技術社區[雲棲]
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);
最後更新:2017-04-03 12:56:00