文字背景的span,比如圆角矩形

参考

效果类似下面这种:


image.png

或者这种:


26黄色的背景

相关代码:

public class RoundedBackgroundSpan extends ReplacementSpan {

    private static int CORNER_RADIUS = 8;
    private int backgroundColor = 0;
    private int textColor = 0;

    public RoundedBackgroundSpan(int backgroundColor, int textColor) {
        this.backgroundColor = backgroundColor;
        this.textColor = textColor;
    }

    @Override
    public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
        RectF rect = new RectF(x, top, x + measureText(paint, text, start, end), bottom);
        paint.setColor(backgroundColor);
        canvas.drawRoundRect(rect, CORNER_RADIUS, CORNER_RADIUS, paint);
        paint.setColor(textColor);
        canvas.drawText(text, start, end, x, y, paint);
    }

    @Override
    public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
        return Math.round(paint.measureText(text, start, end));
    }

    private float measureText(Paint paint, CharSequence text, int start, int end) {
        return paint.measureText(text, start, end);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,416评论 25 708
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,199评论 0 13
  • 《清明扫墓记》 摆供品时才发现忘了带香。三叔公有些不知所措,直到我抽出香烟给每座坟前插上三支并点燃时,他才有些释怀...
    点点星灯阅读 412评论 0 0
  • 女儿, 明天期中考试,希望你能享受连续三天考试日,让自己满意。 妈妈更希望看到你废寝忘食的学习,但是你却如此钟爱美...
    Syneysun阅读 229评论 0 2
  • 下雨了 心里起了雾 静默的车内 周身的尘埃 起风了 眼里落了泪 喧闹的街道 行人的注目 伤心的时候喜欢写下一首诗 ...
    暖暖百合花阅读 234评论 6 1