Obecnie używam paintObject.measureText(textCopy.substring(0,i))
podczas iteracji poprzez kopię tekstu TextView. Na przykład measureText("abc".substring(0,1))
da mi względne współrzędne x "b". Współrzędna y otrzymuję od layout.getLineTop()
. To działa, ale nie jest dokładne nie jest dokładne dla x współrzędne dla nieokreślonych czcionek. Mogę trochę skalibrować, ale na każdym urządzeniu działa inaczej.Znajdź dokładne współrzędne pojedynczego znaku wewnątrz obiektu TextView
Najlepszym rozwiązaniem, które mogę wymyślić jest zastąpienie klasy, która jest odpowiedzialna za rysowanie TextView na ekranie i, miejmy nadzieję, uzyskać współrzędne każdej postaci narysowanej na ekranie.
Czy ktoś wie, jakie klasy muszę nadpisać, aby osiągnąć ten cel? A może jakieś inne twórcze rozwiązanie?
Czy tekst ma zawierać jakikolwiek znacznik (jak niektóre znaczniki html)? Jeśli nie, możesz po prostu zastąpić "onDraw()" TextView i narysować tekst, jak chcesz. –
Może zawierać tekst łączony. – Igor
Cóż, to trochę komplikuje, w "onDraw()" będziesz musiał wyrenderować każdy znak bazujący na dowolnym zakresie, do którego należy, np. Pogrubienie lub kursywą, aktualizując 'Farbę' używaną do rysowania. –