目前我正在使用paintObject.measureText(textCopy.substring(0,i)),同时迭代TextView文本的副本.例如,measureText(“abc”.substring(0,1))将给出相对x坐标’b’.我从layout.getLineTop()得到的y坐标.这对于非等宽字体的x坐标有效但不准确.我可以稍微校准一下,但在每个设备上它的工作方式不同.
我能想到的最好的解决方案是覆盖负责在屏幕上绘制TextView的类,并希望获得绘制到屏幕上的每个字符的坐标.
有谁知道我需要覆盖什么类来完成这个?或者其他一些创意解决方案?
好吧,它似乎是Paint.measureText()或其他更深层次的
错误.但我终于找到了
解决方法:
layout.getPrimaryHorizontal(int offset)
这很容易.您只需使用其使用的文本长度迭代布局.
它将返回行位置的字符REGARDLESS的x.所以我仍然从layout.getLineTop()得到的行.顺便说一句,如果你使用layout.getLineTop(),请注意有一些奇怪的行为,可能是一个bug.我已提交错误报告here.