Android ReplacementSpan 文字對齊問題

項目中需要在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就是要顯示的‘@人員的名稱’

發佈了106 篇原創文章 · 獲贊 382 · 訪問量 118萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章