Android文本绘制高宽获取

Android2023年3月16日 am8:08发布1年前 (2023)更新 3XCN.COM站长
0 0 0
广告也精彩
目录

前言

自定义View中通过canvas.drawText()显示文本是,需要考虑文本的中心位置,因此需要计算文本的高度。

今天就记录一下文本绘制相关的注意事项,方便自己查阅。

正文

下面介绍一下获取高度和文本宽度等方法

FontMetrics

绘制文本,需要注意字体的基准线,如图

Android文本绘制高宽获取

我们知道Android中的Paint.FontMetrics类中有封装相关属性:

  1. top:在一个大小确定的字体中,被当做最高字形,基线(base)上方的最大距离。
  2. ascent:单行文本中,在基线(base)上方被推荐的距离。
  3. descent:单行文本中,在基线(base)下方被推荐的距离。
  4. bottom:在一个大小确定的字体中,被当做最低字形,基线(base)下方的最大距离。

如果要计算文字的高度,可以使用descent-ascent

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setTextSize(spToPixel(30.0f));//文字大小
paint.setColor(getResources().getColor(R.color.white));//文字颜色
Paint.FontMetrics fontMetrics = paint.getFontMetrics();


//文字居中
mTextY = getHeight() * 1.0f / 2 + Math.abs((fontMetrics.ascent + fontMetrics.descent) / 2);

canvas.drawText(mText, 0, mText.length(), 0, mTextY, paint);

getTextBounds

String text = "125啦读书导航-阅读是一种生活方式。高品质生活!";
Rect rect = new Rect();
mPaint.getTextBounds(text, 0, text.length(), rect);
int width = rect.width();
int height = rect.height();

参考文章

  1. Android绘制文本之获取宽高笔记
  2. 自定义View文本居中问题

 历史上的今天

版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站文章: 部分来源于网络,仅供站长学习和参考,若侵权请留言
广告也精彩

相关文章

广告也精彩

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...

网站升级中

公告

近期网站升级中,可能存在一些bug。欢迎反馈 https://www.91es.com/we.html

本站域名

本站域名 : 91es.com3xcn.com。本站邮箱 : 站长邮箱 i@oorr.cn,通知邮箱we@oorr.cn ,如有更新,请看公告 。