java - Android:允许通过扩展 EditText 在画布上输入文本
问题描述
我正在制作一个自定义视图,可以使用典型的绘图工具(如绘图、形状放置或编写文本)进行注释,但我一直坚持如何启用文本输入,而无需诉诸于在触摸时创建新视图。我希望能够处理这个自定义视图类中的所有注释。
我的想法是扩展 EditText,因为它似乎具有在屏幕上创建可编辑文本所需的所有功能。目前,我重写onTouchEvent(MotionEvent event)
以注释已加载到名为 AnnotationView 的自定义 EditText 中的任何可绘制对象。我可以super.onTouchEvent(event)
在选择文本工具并显示软键盘时调用。输入的文本显示在屏幕上,我可以对其进行编辑。但是,目前我只能在一个地方输入文本,因为目前这只是一个添加了绘图功能的 EditText。super
任何其他被覆盖的方法(onSizeChanged、onDraw、performClick)都以对其实现的调用开始。
这里有没有人尝试过这样的事情?我需要允许用户在他们的触摸坐标处开始编辑文本,但我不知道我需要重写或创建什么方法来做到这一点。这似乎是避免需要使用 AnnotationView 从 Activity 创建更多视图的好方法,但我不确定这种方法到底有多可行。
可以在此处看到问题: AnnotationView 的图像正在示例应用程序中使用
为了解释为什么我试图避免创建新的视图来写入文本——我想将它作为一个库发布,所以我试图为使用这个视图的人提供最少的麻烦。理想情况下,开发人员可以放置这个视图,然后选择我通过他们自己的 UI 实现的任何工具。如果我需要在此之上创建视图,我需要要求用户通过某种侦听器来滚动他们自己的文本编辑实现......也许?如果我错过了一种更简单的方法,请告诉我!我在这里看到过类似的问题,但是对于像我这样的许多初学者来说,捕获用户输入并将其显示在画布上似乎是一种明确的好习惯。
解决方案
推荐阅读
- angular - Angular / Typescript将带有Promise的方法转换为Observable
- json - 更改json中的数据名称
- sql-server - IIS - 错误:无法识别的属性“configBuilders”
- python - Python GPIO列表循环,但不要等待完成
- spss - 识别数据中的异常值
- php - 到 authorize.net 的 cUrl 帖子在 80% 的情况下返回空
- java - 在 Java 中,如何确保布尔标志的安全和一致的并发使用,同时最大限度地减少时间性能影响?
- javascript - 将 Express 服务器部署到 Firebase 问题
- d3.js - 带 D3 的滑动值选择器
- javascript - 运行 NPM start 时收到错误消息