android - 在 TextView 中查找单个字符的精确坐标

标签 android android-canvas textview android-screen

目前我正在使用 paintObject.measureText(textCopy.substring(0,i)) 循环访问 TextView 文本的副本。例如,measureText("abc".substring(0,1)) 会给出“b”的相对 x 坐标。我从 layout.getLineTop() 获得的 y 坐标。这对非等宽 字体的x 坐标有效但不准确。我可以稍微校准一下,但在每台设备上它的工作方式都不同。

我能想到的最佳解决方案是覆盖负责在屏幕上绘制 TextView 的类,并希望获得绘制到屏幕上的每个字符的坐标。

有谁知道我需要覆盖哪个类来完成这个?或者其他一些创造性的解决方案?

最佳答案

好吧,这似乎是 Paint.measureText() 或其他更深类的错误。但我最终找到了解决方法:

layout.getPrimaryHorizontal(int offset)

这很容易。您只需使用它使用的文本的长度遍历布局。

无论行位置如何,它都会返回字符的 x。所以我仍然从 layout.getLineTop() 获取行。顺便说一句,如果您使用的是 layout.getLineTop(),请注意有一些奇怪的行为,可能是错误。我已提交错误报告 here .

关于android - 在 TextView 中查找单个字符的精确坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18257321/

相关文章:

android - canvas.clip Path()即使在禁用硬件加速后也无法正常工作

android - 在 Android 中如何更改正在列表中搜索的特定字母/字符的颜色

android - 如何将自定义textview中的第一个字母大写?

android - 自动完成编辑文本android

android - 具有自定义背景颜色的 Lollipop 按钮

android菜单项不显示

android - 即时消息如何发送到 Android 应用程序?

Android Studio - 如何创建显示在当前 View 上方的透明 View

javascript - Android-Java & JavaScript(Webview) 之间的桥梁

android - 将 android Canvas 保存为 svg