我有一个TextView
与OnTouchListener
。我想要的是当我得到MotionEvent
时用户指向的字符索引。有什么方法可以获得TextView
的底层字体指标吗?Android:如何确定触摸事件在TextView中的位置的字符索引?
回答
我不知道的一个简单直接的方式来做到这一点,但你应该能够通过调用装上去一起使用的TextView的Paint对象TextView.getPaint()
一旦你有喷漆的对象,你将有通过调用Paint.getFontMetrics()访问底层FontMetrices,并访问Paint.measureText()Paint.getTextBounds()和Paint.getTextWidths()等其他函数,以访问显示文本的实际大小。
你有没有尝试过这样的事情:
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
}
希望这有助于...
我在Google IO办公室工作时问Google工程师,这与他们提出的是一样的。 – 2011-05-10 04:57:48
我很高兴我找到了这个答案,谢谢Tony!它工作得很好! 即使TextView包含图像,现在我也没有任何问题处理触摸事件。 :-) – einschnaehkeee 2011-11-29 14:49:15
感谢您拯救我的生命:) – Mingfei 2015-12-22 08:23:50
- 1. Android TextView触摸事件
- 2. Android和触摸事件的位置
- 3. 自定义TouchDevice触发不正确位置的触摸事件
- 4. android:如何从触摸事件中获取文本位置
- 5. Android中的触摸事件
- 6. 确定BlackBerry的屏幕触摸位置
- 7. Android没有在滚动条的TextView上接收触摸事件
- 8. 关于在Android中的触摸事件
- 9. Android的触摸事件
- 10. iphone:我如何获取触摸事件的位置?
- 11. Android上的JavaScript中的触摸事件
- 12. 如何在AndEngine中触摸位置?
- 13. 如何禁用触摸事件android
- 14. 在Android的多点触摸事件
- 15. Android WebView中的触摸事件
- 16. Android中的拦截触摸事件
- 17. 在Android中禁用WebView触摸事件
- 18. 如何在XAML中的特定位置触发路由事件?
- 19. 如何在android中停止触摸事件所需的时间?
- 20. 在php中查找字符串中的特定索引位置?
- 21. Android Soundpool - 触摸事件
- 22. 如何将指数定义为字符串的索引位置
- 23. cocos2d确定屏幕上用户正在触摸的位置
- 24. 如何在指定位置搜索字符串引用?
- 25. 在textview中触摸坐标
- 26. 如何确定文本文件中字符的位置(C++)
- 27. 如何获得触摸的触摸位置开始功能
- 28. 如何确定触摸哪个控件?
- 29. 如何在android中获得双触摸位置?
- 30. 如何在触摸特定位置时获得触觉反馈?
谢谢,我结束了使用此。太糟糕了,没有简单的“pointToCharacterIndex”类型的内置方法,但它不是我们自己感谢Paint的火箭科学。 – Epaga 2010-02-22 15:44:25
@Tony Blues的答案有点TOTharacterIndex你要找的东西。 – 2011-07-06 20:21:49