2010-02-20 35 views

回答

5

我不知道的一個簡單直接的方式來做到這一點,但你應該能夠通過調用裝上去一起使用的TextView的Paint對象TextView.getPaint()

一旦你有噴漆的對象,你將有通過調用Paint.getFontMetrics()訪問底層FontMetrices,並訪問Paint.measureText()Paint.getTextBounds()和Paint.getTextWidths()等其他函數,以訪問顯示文本的實際大小。

+0

謝謝,我結束了使用此。太糟糕了,沒有簡單的「pointToCharacterIndex」類型的內置方法,但它不是我們自己感謝Paint的火箭科學。 – Epaga 2010-02-22 15:44:25

+0

@Tony Blues的答案有點TOTharacterIndex你要找的東西。 – 2011-07-06 20:21:49

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 IO辦公室工作時問Google工程師,這與他們提出的是一樣的。 – 2011-05-10 04:57:48

+0

我很高興我找到了這個答案,謝謝Tony!它工作得很好! 即使TextView包含圖像,現在我也沒有任何問題處理觸摸事件。 :-) – einschnaehkeee 2011-11-29 14:49:15

+0

感謝您拯救我的生命:) – Mingfei 2015-12-22 08:23:50