目前我正在使用 paintObject.measureText(textCopy.substring(0,i))
循环访问 TextView 文本的副本。例如,measureText("abc".substring(0,1))
会给出“b”的相对 x 坐标。我从 layout.getLineTop()
获得的 y 坐标。这对非等宽 字体的x 坐标有效但不准确。我可以稍微校准一下,但在每台设备上它的工作方式都不同。
我能想到的最佳解决方案是覆盖负责在屏幕上绘制 TextView 的类,并希望获得绘制到屏幕上的每个字符的坐标。
有谁知道我需要覆盖哪个类来完成这个?或者其他一些创造性的解决方案?
最佳答案
好吧,这似乎是 Paint.measureText()
或其他更深类的错误。但我最终找到了解决方法:
layout.getPrimaryHorizontal(int offset)
这很容易。您只需使用它使用的文本的长度遍历布局。
无论行位置如何,它都会返回字符的 x。所以我仍然从 layout.getLineTop()
获取行。顺便说一句,如果您使用的是 layout.getLineTop()
,请注意有一些奇怪的行为,可能是错误。我已提交错误报告 here .
关于android - 在 TextView 中查找单个字符的精确坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18257321/