在电子邮件撰写中,我想要像 Android 中的 yahoo 功能一样的设计输入

发布于 2024-12-09 17:39:37 字数 447 浏览 0 评论 0原文

在撰写电子邮件时,当用户在 to/cc/bcc 中键入/选择电子邮件 ID 时。 假设有 7-8 个电子邮件 ID,现在用户想要删除第三个。 用户很难转到第三个并删除该第一个。所以我认为解决方案是,

  1. 用户输入电子邮件 ID 并点击空格或逗号。
  2. 那么背景上应该出现一个矩形框。
  3. 我想要在那个矩形框的右上角有一个十字标记。
  4. 如果用户想删除第三个电子邮件 ID,那么他只需点击包含该电子邮件 ID 的第三个矩形的十字标记即可。

(请参考雅虎电子邮件编辑器的下图)

雅虎邮箱

我需要类似的功能。我怎样才能在android中实现?有我可以使用的标准组件吗?目前我正在使用“收件人”、“抄送”、“密件抄送”的自动完成文本视图。请帮忙。先感谢您。

In Email compose, when user types/selects email ids in to/cc/bcc.
Suppose there are 7-8 email ids and now user want to delete 3rd one.
It is very difficult for user to go to 3rd one and delete that one. So I think solution for this is,

  1. User enters email id and hits SPACE or COMMA.
  2. then one rectangular box should appear on background.
  3. I want an cross mark on right corner of that rectangular box.
  4. If user want to delete that 3rd email id,then he will just tap on cross mark of 3rd rectangle which contains that email id.

(please refer figure below from Yahoo email composer)

Yahoo mail box

I need similar functionality. How can I achieve in android? Is there any standard component I can use? Currently I am using auto complete text view for To, Cc, Bcc. Please help. Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天煞孤星 2024-12-16 17:39:37

我没有时间编写工作代码,但我会为您指出正确的方向。在像 EditText 这样的标准组件中使用文本做一些时髦的事情的关键称为“跨度”。

建议的攻击计划:

  1. TextWatcher 添加到您的 EditText 中,以便您知道文本何时发生变化。
  2. 每次文本更改时,扫描内容以查找与电子邮件地址匹配的任何内容(建议您使用正则表达式)。
  3. 对于每个匹配的电子邮件地址,使用标准绘图 API 生成等效的位图(即创建画布、测量文本、绘制背景、绘制文本)。
  4. 实例化一个 ImageSpan (这是有点是整个事情的关键)使用位图作为构造函数参数。
  5. 将文本中的电子邮件地址替换为单个空格字符(例如),并对该单个字符调用 setSpan() 以替换您的 ImageSpan这是外观。

I don't have time to write up working code, but I will point you in the right direction. The key for doing funky things with text in standard components like EditText are called "spans".

Suggested plan of attack:

  1. Add a TextWatcher to your EditText so you know when the text changes.
  2. Each time the text changes, scan the contents for anything matching an email address (suggest you use regex for this).
  3. For each matched email address, generate a Bitmap equivalent using standard drawing APIs (i.e. create Canvas, measure text, draw background, draw text).
  4. Instantiate an ImageSpan (this is kinda the key to the whole thing) using your bitmap as the constructor argument.
  5. Replace the email address in the text with a single space character (say) and call setSpan() on that single character to have your ImageSpan replace it's appearance.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文