2010-02-20 2 views

ответ

5

Я не знаю простой прямой способ сделать это, но вы должны быть в состоянии положить что-то вместе, используя Paint объект TextView через вызов TextView.getPaint()

После того, как у вас есть объект краски вы будете иметь доступ к основным FontMetrices через вызов Paint.getFontMetrics() и доступ к другим функциям, таким как Paint.measureText() Paint.getTextBounds() и Paint.getTextWidths() для доступа к фактическому размеру отображаемого текста.

+0

Спасибо, я в конечном итоге с помощью этого. Слишком плохо, что нет простого метода типа «pointToCharacterIndex», но это не была наука о ракетах, чтобы качать мою собственную благодарность Paint. – Epaga

+0

@Tony Blues отвечает, что вещь pointToCharacterIndex вы ищете. –

23

Вы пробовали что-то вроде этого:

Layout layout = this.getLayout(); 
if (layout != null) 
{ 
    int line = layout.getLineForVertical(y); 
    int offset = layout.getOffsetForHorizontal(line, x); 

    // At this point, "offset" should be what you want - the character index 
} 

Надеется, что это помогает ...

+1

Я спросил инженеров Google в часы работы Google IO, и это то же самое, что они придумали. –

+0

Я так счастлив, что нашел этот ответ, спасибо Тони! Он отлично работает! Теперь у меня нет никаких проблем с сенсорными событиями, даже если TextView содержит изображения. :-) – einschnaehkeee

+0

Спасибо, что спасли мою жизнь :) – Mingfei

Смежные вопросы