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

时间:2015-10-25 14:10:23

标签: android android-edittext android-6.0-marshmallow textselection android-actionmode

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

唯一的事情就是在TextView中选择文本后无法显示操作栏菜单。

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

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

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

如果有人有任何可能有用的想法或库,那么我全都听见了。

1 个答案:

答案 0 :(得分: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

enter image description here

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