android ondraw()高度,android drawText测量文字宽度和高度的几种方法

最近接触的项目里,有自定义文字控件的内容,在onDraw的时候需要用canvas画到画布上,这就牵扯到测量文字的宽度和高度(主要是文字的坐标)了,首先,先去这个网址学习一下关于文字的相关知识,输入链接说明,讲的很好。 测量文字有几种方法,下面就单独拿出来说一下: 首先是横坐标:

//获取文字所在区域的长方形,textContent是文字内容

Rect lRect = new Rect();

textPaint.getTextBounds(textContent,0,textContent.length(),lRect);

//用控件所占区域的长方形的宽度,减去文字所在的长方形的跨度,一半的位置就是文字开始的X坐标

int baseLineX = getMeasuredWidth()/2-lRect.width()/2;

接下来是纵坐标:

//对于汉字来说,纵坐标并不固定,原因我还没有找到,各个尺寸手机上的,居中会有微小的尺寸差异

//有一种较为普遍的计算Y坐标的方式,就是

//如果baseline对齐的话:底端的Y坐标是:(行高-字体高度)/2+字体高度,但是字符串并不居中,经过测试 //如果:(行高-字体高度)/2+字体高度-6 ,就稍微居中了一点。

//代码如下:

int baseline = (getMeasuredHeight() - (-fontMetrics.ascent + fontMetrics.descent)) /

2+fontMetrics.descent-fontMetrics.ascent+6;

为了解决文字的坐标问题,在网上看了不少文章,有一些感觉有以下问题,比如这篇,[输入链接说明](http://blog.csdn.net/hursing/article/details/18703599),最后确定文字的Y坐标的时候,输入的参数是targetRect.centerX(),centerX这个参数就是在屏幕中的坐标,这个要格外注意

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值