首页 > 解决方案 > Android:允许通过扩展 EditText 在画布上输入文本

问题描述

我正在制作一个自定义视图,可以使用典型的绘图工具(如绘图、形状放置或编写文本)进行注释,但我一直坚持如何启用文本输入,而无需诉诸于在触摸时创建新视图。我希望能够处理这个自定义视图类中的所有注释。

我的想法是扩展 EditText,因为它似乎具有在屏幕上创建可编辑文本所需的所有功能。目前,我重写onTouchEvent(MotionEvent event)以注释已加载到名为 AnnotationView 的自定义 EditText 中的任何可绘制对象。我可以super.onTouchEvent(event)在选择文本工具并显示软键盘时调用。输入的文本显示在屏幕上,我可以对其进行编辑。但是,目前我只能在一个地方输入文本,因为目前这只是一个添加了绘图功能的 EditText。super任何其他被覆盖的方法(onSizeChanged、onDraw、performClick)都以对其实现的调用开始。

这里有没有人尝试过这样的事情?我需要允许用户在他们的触摸坐标处开始编辑文本,但我不知道我需要重写或创建什么方法来做到这一点。这似乎是避免需要使用 AnnotationView 从 Activity 创建更多视图的好方法,但我不确定这种方法到底有多可行。

可以在此处看到问题: AnnotationView 的图像正在示例应用程序中使用


为了解释为什么我试图避免创建新的视图来写入文本——我想将它作为一个库发布,所以我试图为使用这个视图的人提供最少的麻烦。理想情况下,开发人员可以放置这个视图,然后选择我通过他们自己的 UI 实现的任何工具。如果我需要在此之上创建视图,我需要要求用户通过某种侦听器来滚动他们自己的文本编辑实现......也许?如果我错过了一种更简单的方法,请告诉我!我在这里看到过类似的问题,但是对于像我这样的许多初学者来说,捕获用户输入并将其显示在画布上似乎是一种明确的好习惯。

标签: javaandroidcanvasandroid-edittextuser-input

解决方案


推荐阅读