是否可以在 Marshmallow 之前的 Android 版本中创建自定义浮动文本选择菜单?

Con*_*nti 5 android textselection android-edittext android-actionmode android-6.0-marshmallow

我正在寻找为文本选择创建一个自定义菜单。我知道可以使用 setCustomSelectionActionModeCallback 编辑操作栏的行为,但在我的情况下,我根本不希望该操作栏显示,我想要自己已经实现的浮动自定义菜单。

唯一的问题是在 TextView 中选择文本后,无法不显示操作栏菜单。

我需要的行为不是标准的剪切/复制/粘贴,我实施的操作是用于突出显示文本的突出显示部分并将其保存到数据库中。

我做了一些修补,我能做的最好的事情是一个凌乱的反射想法,我在 onCreateActionMode 返回 false 并通过反射获得对文本选择句柄的引用。它成功了一半,而且效果很好,因为在这种情况下,任何形式的反射都是非常糟糕的做法。

我希望最后一个支持库在 6.0 中包含浮动文本菜单,虽然我可以在该菜单中实现我自己的自定义视图,但这是一厢情愿的想法。

如果有人有任何可能有用的想法或库,那么我全神贯注。

Zie*_*ony 2

正如您已经注意到的,使用反射是其中一种方法。我很确定这是唯一的一个。如果您对我对该菜单所做的事情感兴趣,请查看 Carbon。它的 EditText 几乎可以满足您的需要,但也具有反射功能。

代码片段太长,无法粘贴到此处,但以下是链接:

https://github.com/ZieIony/Carbon/blob/master/carbon/src/main/java/carbon/widget/EditText.java https://plus.google.com/109054799904873578131/posts/BH6r9J5gnw6

在此输入图像描述

基本上,我隐藏了精美的三星菜单,禁用标准操作模式,并显示我自己的弹出窗口,其中包含连接到标准复制/粘贴单击处理程序的选项。