Найти точные координаты одного символа внутри TextView

В настоящее время я использую paintObject.measureText(textCopy.substring(0,i)) , итерации через копию текста TextView. Например, measureText("abc".substring(0,1)) даст мне относительные х-координаты 'b'. Координата y, которую я получаю от layout.getLineTop() . Это работает, но не точно для координат x для немоноширинговых шрифтов. Я могу немного откалибровать, но на каждом устройстве он работает по-разному.

Лучшее решение, о котором я могу думать, это перезаписать класс, который отвечает за рисование TextView на экране и, надеюсь, получить координаты каждого символа, нарисованного на экране.

Кто-нибудь знает, какой класс мне нужно переписать, чтобы выполнить это? Или, может быть, какое-то другое творческое решение?

Это похоже на ошибку Paint.measureText() или другого более глубокого класса. Но я НАКОНЕЦ нашел способ обойти это:

 layout.getPrimaryHorizontal(int offset) 

Это очень легко. Вы просто перебираете макет, используя длину текста, который он использует.

Он вернет x символа REGARDLESS позиции линии. Так строки, которые я все еще получаю от layout.getLineTop() . Кстати, если вы используете layout.getLineTop() , обратите внимание, что есть странное поведение, возможно, ошибка. Я отправил здесь отчет об ошибке.