android – 在TextView中查找单个Character的精确坐标

目前我正在使用paintObject.measureText(textCopy.substring(0,i)),同时迭代TextView文本的副本.例如,measureText(“abc”.substring(0,1))将给出相对x坐标’b’.我从layout.getLineTop()得到的y坐标.这对于非等宽字体的x坐标有效但不准确.我可以稍微校准一下,但在每个设备上它的工作方式不同.

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

有谁知道我需要覆盖什么类来完成这个?或者其他一些创意解决方案?

解决方法

好吧,它似乎是Paint.measureText()或其他更深层次的错误.但我终于找到了解决方法:
layout.getPrimaryHorizontal(int offset)

这很容易.您只需使用其使用的文本长度迭代布局.

它将返回行位置的字符REGARDLESS的x.所以我仍然从layout.getLineTop()得到的行.顺便说一句,如果你使用layout.getLineTop(),请注意有一些奇怪的行为,可能是一个bug.我已提交错误报告here.

相关文章

AdvserView.java package com.earen.viewflipper; import an...
ImageView的scaleType的属性有好几种,分别是matrix(默认)...
文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...