找到一种简单而不慢的方法来确定使用不使用StaticLayout的特定Paint绘制的文本宽度/高度.

public int getTextWidth(String text,Paint paint) {

Rect bounds = new Rect();

paint.getTextBounds(text,text.length(),bounds);

int width = bounds.left + bounds.width();

return width;

}

public int getTextHeight(String text,bounds);

int height = bounds.bottom + bounds.height();

return height;

}

技巧的简短描述:Paint.getTextBounds(String text,int start,int end,Rect bounds)返回不从(0,0)开始的Rect.也就是说,要获取将通过使用getTextBounds()中的相同Paint对象调用Canvas.drawText(String text,float x,float y,Paint paint)设置的文本的实际宽度,您应该添加Rect的左侧位置.

注意这个bounds.left – 这是问题的关键.

通过这种方式,您将获得使用Canvas.drawText()接收的相同宽度的文本.

在this答案中给出了更详细的解释.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐