android 图片底部波浪线,如何添加文字下面的红色波浪线在Android的TextView的

@ bpronin的代码不适用于我 - 跨度在高分辨率屏幕上太小,跨越整个文本,不仅跨越错误。

但按照他的想法,我更新了我的答案以删除添加的资源的需求:

public class ErrorSpan extends DynamicDrawableSpan {

private int width;

int lineWidth;

int waveSize;

int color;

public ErrorSpan(Resources resources) {

this(resources, Color.RED, 1, 3);

}

public ErrorSpan(Resources resources, int color, int lineWidth, int waveSize) {

super(DynamicDrawableSpan.ALIGN_BASELINE);

// Get the screen's density scale

final float scale = resources.getDisplayMetrics().density;

// Convert the dps to pixels, based on density scale

this.lineWidth = (int) (lineWidth * scale + 0.5f);

this.waveSize = (int) (waveSize * scale + 0.5f);

this.color = color;

}

@Override

public Drawable getDrawable() {

return null;

}

@Override

public int getSize(Paint paint, CharSequence text,

int start, int end,

Paint.FontMetricsInt fm) {

width = (int) paint.measureText(text, start, end);

return width;

}

@Override

public void draw(Canvas canvas, CharSequence text,

int start, int end, float x,

int top, int y, int bottom, Paint paint) {

Paint p = new Paint(paint);

p.setColor(color);

p.setStrokeWidth(lineWidth);

int doubleWaveSize = waveSize * 2;

for (int i = (int)x; i < x + width; i += doubleWaveSize) {

canvas.drawLine(i, bottom, i + waveSize, bottom - waveSize, p);

canvas.drawLine(i + waveSize, bottom - waveSize, i + doubleWaveSize, bottom, p);

}

canvas.drawText(text.subSequence(start, end).toString(), x, y, paint);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值