【问题标题】:Locate text position in TextView在 TextView 中定位文本位置
【发布时间】:2019-03-04 01:02:50
【问题描述】:

如何通过知道它的索引来计算 TextView 中字母的位置 X 、 Y ? 我需要它来显示一个图形指针,指向被触摸的字母或单词,但我不知道如何找到正确的位置。

【问题讨论】:

  • 如果你知道索引,那么也许 x = (Paint.measureText(yourText) / yourText.length()) * index
  • 是单行TextView还是可以多行?
  • TextView 很大,有很多行 ;)
  • 这是个好问题。应该被标记为阴性。如果有人对此有答案,请告诉我。

标签: android textview


【解决方案1】:

希望对您有所帮助:

我不知道执行此操作的简单直接方法,但您应该能够通过调用 TextView.getPaint().. 使用 TextView 的 Paint 对象将一些东西放在一起

一旦你有了绘画对象,你就可以通过调用Paint.getFontMetrics()访问底层FontMetrices,并可以访问其他函数,如Paint.measureText()Paint.getTextBounds()Paint.getTextWidths(),用于访问实际大小显示的文字...

【讨论】:

  • 听起来很有帮助,谢谢
  • @SoheilSetayeshi:欢迎哥们。。如果我的回答对你有帮助,请不要忘记标记它。。
  • 当然,让我试一试;)
【解决方案2】:

试试这个:

Rect bounds = new Rect();
Paint textPaint = textView.getPaint();
textPaint.getTextBounds(text,0,text.length(),bounds);
int height = bounds.height();
int width = bounds.width();

这应该给你高度和宽度。为每个单独的字符创建一个具有不同值的高度/宽度数组,如果您使用循环和 ASCII 字符代码,您可以快速完成。然后,您可以添加每个字符的宽度,直到达到您想要的宽度。

但我认为有一种更简单的方法。尝试使用具有多个文本视图的 LinearLayout 而不是 TextView。如果对每个字符使用 textview,则可以只使用 getX 和 getY。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多