android breaktext,Android:Paint.breakText(…)是不准确的?

我有一个View,它绘制一个矩形,里面有一行文字.视图使用中断文本以确保没有文本扩展到矩形之外;它会忽略任何文本.这适用于某些角色,但通常由’l’和’f’构成的字符串在矩形之外延伸.所以,我需要在这里进行健全性检查:我的下面的代码中是否存在明显的缺陷,或者Paint.breakText(…)是否可能不准确?

public void onDraw(Canvas canvas)

{

int MARGIN = 1;

int BORDER_WIDTH = 1;

Paint p = new Paint();

p.setAntiAlias(true);

p.setTextSize(12);

p.setTypeface(Typeface.create(Typeface.SERIF, Typeface.NORMAL));

RectF rect = getRect();

float maxWidth = rect.width() - MARGIN - BORDER_WIDTH * 2;

String str = getText();

char[] chars = str.toCharArray();

int nextPos = p.breakText(chars, 0, chars.length, maxWidth, null);

str = str.substring(0, nextPos);

float textX = MARGIN + BORDER_WIDTH;

float textY = (float) (Math.abs(p.getFontMetrics().ascent) + BORDER_WIDTH + MARGIN);

canvas.drawText(str, textX, textY, p);

p.setStrokeWidth(BORDER_WIDTH);

p.setStyle(Style.STROKE);

canvas.drawRect(rect, p);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值