【问题标题】:Remove CAB but preserve webview text selection删除 CAB 但保留 webview 文本选择
【发布时间】:2016-07-16 05:40:04
【问题描述】:

我想实现我自己的自定义视图(不是膨胀菜单项),我计划使用工具栏在每次 contextMenu 启动时出现,并在完成时隐藏它。

问题是:只有答案显示如何在默认的 actionMode 菜单上清除/膨胀另一个菜单

到目前为止我已经尝试过什么:

->Use a custom contextual action bar for WebView text selection

覆盖 WebView 的回调

  @Override
    public ActionMode startActionMode(ActionMode.Callback callback) {
        callback2 = new customCallBack();
        return super.startActionMode(callback2);
    }



 public class customCallBack implements ActionMode.Callback {

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    }

将返回 false 更改为 true,不会导致所需的行为,即隐藏 cab

覆盖OnLongClick 也不是一个选项,因为它会禁用当前选择。

【问题讨论】:

  • 我想弄清楚同样的事情。我经历了和你一样的思考过程。没有简单的方法可以做到这一点,这太疯狂了

标签: android webview


【解决方案1】:

这个答案解决了这个问题: android webview: prevent text selection actionMode actionBar

这不是有史以来最优雅的解决方案,但我只是在我正在构建的应用程序中对其进行了测试,它就像一个魅力。

【讨论】:

    【解决方案2】:

    对我有用的唯一方法(仅在 Android L+ 上)是从 Activity 中清除上下文操作栏中的所有菜单项

     @Override
    public void onActionModeStarted(ActionMode mode) {
        if (mActionMode == null) {
            mActionMode = mode;
            Menu menu = mode.getMenu();
            // Remove the default menu items (select all, copy, paste, search)
            menu.clear();
        }
        Toast.makeText(this, "onActionModeStarted", Toast.LENGTH_SHORT).show();
        super.onActionModeStarted(mode);
    
    }
    
     @Override
        public void onActionModeFinished(ActionMode mode) {
            mActionMode = null;
            Toast.makeText(this, "onActionModeFinished", Toast.LENGTH_SHORT).show();
            super.onActionModeFinished(mode);
        }
    

    灵感来自Use a custom contextual action bar for WebView text selection

    我也无法在 popupWindow 或对话框或对话框片段中实现自定义菜单。

    所以只需将它与 webView 放在一个框架布局中,并使用它的可见性和边距

    【讨论】:

    • 这不起作用,如果您选择更多文本(即滚动选择文本光标),那么所有默认菜单都会再次出现。
    猜你喜欢
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2011-01-19
    • 2014-06-10
    相关资源
    最近更新 更多