2010-02-20 58 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