Android文本绘制高宽获取

Android 91es.com站长2023年3月16日 am8:08发布1年前 (2023)更新
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、 本站网址 https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权请留言
4、 本站禁止发布或转载任何违法的相关信息,如有发现请向站长举报
导航号,我的单页导航

暂无评论

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

暂无评论...