【问题标题】:Is it possible to create a custom floating text selection menu in Android versions pre Marshmallow?是否可以在 Marshmallow 之前的 Android 版本中创建自定义浮动文本选择菜单?
【发布时间】:2016-01-24 15:49:55
【问题描述】:

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

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

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

我已经做了一些修改,我能做的最好的就是一个凌乱的反射想法,我在 onCreateActionMode 中返回 false 并通过反射获得对文本选择句柄的引用。它只奏效了一半,而且效果还不错,因为在这种情况下,任何形式的反思都是非常糟糕的做法。

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

如果有人有任何可能有用的想法或库,那么我会全力以赴。

【问题讨论】:

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


    【解决方案1】:

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

    代码 sn-p 太长,无法粘贴到这里,但这里是链接:

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

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

    【讨论】:

    • 这可能是理想的!我刚刚实现了 Carbon 并将我的 TextViews 替换为 carbon 的 EditText,但它仍然显示默认的 ActionBar 菜单。为了让您的弹出窗口显示,我还需要采取任何其他步骤吗?编辑:我看到第 188 到 222 行被注释掉了,它们是我需要的自定义菜单吗?
    • 当前存储库代码尚未发布,因此 maven 版本没有新的复制/粘贴菜单。每个供应商都有自己的菜单实现,所以我需要时间检查所有情况。来自 repo 的代码应该可以工作,但您的设备可能尚不受支持。如果您愿意,请使用我的代码进行研究 :)
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多