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.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...