項目中需要在TextView中高亮顯示‘@人員的名稱’,實現方法採用自定義ReplacementSpan,遇到高亮的文字與文本對齊問題。
解決方案:
ReplacementSpan的draw方法實現
@Override
public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint) {
if(!TextUtils.isEmpty(mUserName)){
canvas.save();
int color = paint.getColor();
if(mColor != 0) {
paint.setColor(mColor);
}
//@文字對齊
int transY = bottom - y;
transY -= paint.getFontMetricsInt().descent;
canvas.translate(0,transY);
canvas.drawText(mUserName,0,mUserName.length(),x,y,paint);
paint.setColor(color);
canvas.restore();
}
}
其中mUserName就是要顯示的‘@人員的名稱’