我的Android笔记(2)--利用FontMetrics获取文本字符串的宽高 实现水平居中 垂直居中
2014-11-20 11:29
399 查看
本文内容部分来自网络
字体的几个参数 ,以Android API文档定义为准,见下图
要点如下:
1. 基准点是baseline
2. Ascent是baseline之上至字符最高处的距离
3. Descent是baseline之下至字符最低处的距离
4. Leading文档说的很含糊,其实是上一行字符的descent到下一行的ascent之间的距离
5. Top指的是指的是最高字符到baseline的值,即ascent的最大值
6. 同上,bottom指的是最下字符到baseline的值,即descent的最大值
为了帮助理解,我特此搜索了不同的示意图。对照示意图,会很容易理解FontMetrics的参数。
pic-1
pic-2
pic-3
pic-4
pic-5
pic-6
实例
利用paint或者textpaint获取FontMetrics对象FontMetrics fontMetrics = textPaint.getFontMetrics();
String text = "asdfghjkl";
<span style="white-space:pre"> </span>float baseX = 0; float baseY = 100; float topY = baseY + fontMetrics.top; float ascentY = baseY + fontMetrics.ascent; float descentY = baseY + fontMetrics.descent; float bottomY = baseY + fontMetrics.bottom; float leading = baseY + fontMetrics.leading;以下为我个人方法
<span style="white-space:pre"> <span style="color: rgb(85, 85, 85); font-family: 宋体, 'Arial Narrow', arial, serif; font-size: 14px; line-height: 28px;">FontMetrics </span></span>f = paint.getFontMetrics(); paint.setTextSize(20); textHeight =Math.abs( f.ascent + f.descent + f.leading);// 获取文本高度(有时为负值,这里取正值) textWidth = paint.measureText(drawtext);<span style="font-family: 宋体, 'Arial Narrow', arial, serif;">// 获取文本宽度</span>这样在自定义view或者surfaceView中可以设置文本水平居中和垂直居中了。
相关文章推荐
- 利用vertical-align:middle实现行内元素的水平垂直居中对齐
- 利用vertical-align:middle实现行内元素的水平垂直居中对齐
- Android笔记:Button居中|水平居中|垂直居中(总结)
- 实现文本垂直居中水平居中的几种方法
- Android中利用GridView实现水平和垂直均有滚动条的表格效果
- Android笔记:Button居中|水平居中|垂直居中
- Android中利用GridView实现水平和垂直均有滚动条的表格效果
- android canvas drawText实现文本垂直居中
- Android中利用GridView实现水平和垂直均有滚动条的表格效果
- Android应用借助LinearLayout实现垂直水平居中布局
- Android手机开发 使用线性布局和相对布局实现Button垂直水平居中
- table-cell实现未知宽高图片,文本水平垂直居中在div
- 利用css实现元素水平垂直居中的方法(分情况讨论)
- css实现多行文本垂直水平居中
- Android 学习笔记之Volley(六)实现获取服务器的字符串响应...
- Android笔记:Button居中|水平居中|垂直居中(总结)
- Android笔记:Button居中|水平居中|垂直居中(总结)
- Android笔记:Button居中|水平居中|垂直居中(总结)
- Android开发布局系列: LinearLayout布局实现垂直水平居中
- jquery实现水平垂直居中