В настоящее время я использую paintObject.measureText(textCopy.substring(0,i))
, итерации через копию текста TextView. Например, measureText("abc".substring(0,1))
даст мне относительные координаты x 'b'. y Координата Я получаю от layout.getLineTop()
. Это работает, но неточно для x Координаты для non-monospaced fonts. Я могу немного откалибровать, но на каждом устройстве он работает по-другому.Найти точные координаты одного символа внутри TextView
Лучшее решение, о котором я могу думать, это перезаписать класс, который отвечает за рисование TextView на экране и, надеюсь, получить координаты каждого символа, нарисованного на экране.
Кто-нибудь знает, какой класс мне нужно переписать, чтобы выполнить это? Или, может быть, какое-то другое творческое решение?
Должен ли текст содержать какую-либо разметку (например, некоторые теги html)? Если нет, вы можете просто переопределить «onDraw()» TextView и нарисовать текст по своему усмотрению. –
Он может содержать натянутый текст. – Igor
Ну, это немного усложняет ситуацию, в «onDraw()» вам придется отображать каждый символ на основе любого диапазона, к которому он принадлежит, например, полужирный или курсив и т. Д., Обновляя «Paint», который используется для рисования. –