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

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

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

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

  • Android:以编程方式设置textview的一个填充
  • 确定在android textview中单击了哪个单词
  • 如何从代码中删除TextView的ellipsized属性?
  • 如何有一个圆形的TextView
  • 如何减less我的Android布局中的文本之间的行间距?
  • Android Spannable线高度
  • android获取设置为textview的drawabletop的drawable
  • Android布局 - 布局权重和权重
  • 那么它似乎有点像Paint.measureText()或其他更深的类的错误。 但是我最终find了解决办法:

     layout.getPrimaryHorizontal(int offset) 

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

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