【问题标题】:How can I write my own context menu for copy & paste?如何编写自己的复制和粘贴上下文菜单?
【发布时间】:2010-02-09 04:57:26
【问题描述】:

我正在编写一个带有 EditText 驱动的小部件的应用程序。我想创建自己的复制和粘贴菜单。要替换 EditText 上的 android 默认菜单,我该怎么办? 只是覆盖长按?还是有另一种实施方式? 提前致谢。

【问题讨论】:

  • 您好,在您制作了自己的上下文菜单后,默认的复制和粘贴功能是否仍然有效?

标签: android android-widget


【解决方案1】:

EditText 应该已经启用了上下文菜单。如果不是,那么您必须通过调用registerForContextMenu 来启用它。启用上下文菜单后,您必须向其中添加项目。这是在onCreateContextMenu 中使用Menu.add methods 之一完成的。

困难的部分是在用户选择一个选项后为onContextItemSelected 编写代码。将文本保存到剪贴板只需调用((ClipboardManager) getSystemService(CLIPBOARD_SERVICE)).setText("myText");。但是,首先我们需要找到要复制的文本。我还没有弄清楚最后一部分,但我希望我很快就会。

相关问题

【讨论】:

  • 我制作了一个自定义文本选择/上下文工具栏,我在其中添加了用户能够使选定文本变为粗体/斜体/下划线等功能,但在自定义之后,默认功能复制/paste/cut 不再起作用,但它们的图标仍然出现?如何再次激活这些?我自己的粗体/斜体等自定义方法确实有效!
【解决方案2】:

通过覆盖菜单系统、自己创建菜单项和自己的内部缓冲区来实现复制/粘贴,这在某种程度上被认为是一种标准练习。

但是,如果平台上有更好的方法,则不应该这样做。重新实现平台功能有利于学习,但不利于维护。

社区 Wiki,因为这不是一个真正的答案,我不应该为此获得代表。

【讨论】:

  • 我的个人意见和你的一样,但客户总是这样......,没有实现我自己的复制和粘贴菜单是没有办法的。无论如何,谢谢你的回复。
  • 这种事情一般来说评论比较好
  • @casebash 很好,因为它得到了接受的答案,显然不是。
  • 您自己说这不是一个真正的答案。如果您不相信这是一个真正的答案,并且您不需要格式化代码或额外的字符,那么您应该使用注释。另一方面,如果你认为这是一个真实的答案,那么你不应该说它不是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多