在TextView中查找单个字符的确切坐标

目前我正在使用paintObject.measureText(textCopy.substring(0,i))同时迭代TextView的文本的副本。 例如, measureText("abc".substring(0,1))会给我'b'的相对x坐标。 我从layout.getLineTop()获得的y坐标。 对于非等宽字体的x坐标,这是行得通的,但不准确 。 我可以稍微校准,但在每个设备上它的工作方式不同。

我能想到的最好的解决scheme是覆盖负责在屏幕上绘制TextView的类,并希望获得绘制到屏幕上的每个字符的坐标。

有谁知道我需要覆盖什么类来完成这个? 或者,也许还有其他一些创意解决方

Solutions Collecting From Web of "在TextView中查找单个字符的确切坐标"

那么它似乎有点像Paint.measureText()或其他更深的类的错误。 但是我最终find了解决办法:

 layout.getPrimaryHorizontal(int offset) 

这很容易。 您只需使用所用文本的长度遍历布局。

它将返回字符无关行的位置的x。 所以我仍然从layout.getLineTop()获取线。 顺便说一句,如果你使用layout.getLineTop() ,注意到有一些奇怪的行为,可能是一个错误。 我在这里提交了一个错误报告。