1

我想显示文本(相对较大)并确定用户触摸的字符。我还想通过在某些字符上画一个圆圈(例如)来修饰文本。我怎么知道哪些角色在什么位置?如果以编程方式有帮助,则强制执行等宽字体会很好。

它是否也能够使这一行文本向左/向右滚动(使用触摸->滑动)并且仍然具有触摸工作来确定正确的字符?

4

1 回答 1

1

一个非常广泛的问题,你还有很多工作要做,但这里是一个可能的解决方案的概要:

  • 创建自定义视图。ImageView 通常是一个很好的继承基类。

    覆盖视图的 onDraw() 方法。

    使用 canvas.drawText() 将文本放置在屏幕上。

    使用paint.getTextBounds 来测量您的文本。请参阅下面链接的讨论以获得彻底的理解。由于您在屏幕上绘制了文本并对其进行了测量,因此您可以准确地知道每个字符的位置。

    在您的自定义视图中覆盖 onTouch() 方法并跟踪您需要的事件。SO中有很多关于如何做到这一点的质量保证。

    要滚动文本,请使用您在 onTouch() 中计算的移动使用 canvas.translate()。由于您知道滚动(翻译)了多少,您就知道您的角色移动了多远,并且可以抵消您的触摸检测以检测字符触摸。

    最后,由于您现在控制所有绘图,并且您的角色位置是抽象的,只有与触摸位置相比才有意义,您可以选择任何方式来修饰它们。

Android 画图:.measureText() 与 .getTextBounds()

呸!

祝你好运。

于 2012-09-23T05:24:19.720 回答