如何覆盖 webview 的文本选择上下文菜单?

Posted

技术标签:

【中文标题】如何覆盖 webview 的文本选择上下文菜单?【英文标题】:How to override webview's text selection context menu? 【发布时间】:2015-09-17 02:47:34 【问题描述】:

我有一个要求,比如当我通过单击长按来长按 Web 视图中的文本时,我应该设置我的自定义上下文菜单项,而不是“选择”、“全选”、“网络搜索”。

请帮帮我。

想要覆盖这些默认的“全选”、“复制”、“共享”、“网络搜索”。在这个地方想放置我的自定义菜单。

【问题讨论】:

看看this问题。 也许这个答案可以帮助你:How to override default text selection of android webview,这个Use a custom contextual action bar for WebView text selection 【参考方案1】:

不幸的是,您需要从 WebView 类扩展并覆盖 onCreateContextMenu 方法。

见Use a custom contextual action bar for WebView text selection

【讨论】:

【参考方案2】:

你可以在activity方法中做一些自定义:onActionModeStarted(ActionMode mode), 就像这样:

@Override
public void onActionModeStarted(ActionMode mode) 
    if (mActionMode == null) 
        mActionMode = mode;
        Menu menu = mode.getMenu();
        menu.clear();
        getMenuInflater().inflate(R.menu.YOUR_MENU, menu);
        List<MenuItem> menuItems = new ArrayList<>();
        // get custom menu item
        for (int i = 0; i < menu.size(); i++) 
            menuItems.add(menu.getItem(i));
        
        menu.clear();
        // reset menu item order
        int size = menuItems.size();
        for (int i = 0; i < size; i++) 
            addMenuItem(menu, menuItems.get(i), i, true);
        
        super.onActionModeStarted(mode);
    



/**
 * add custom item to menu
 * @param menu
 * @param item
 * @param order
 * @param isClick
 */
private void addMenuItem(Menu menu, MenuItem item, int order, boolean isClick)
    MenuItem menuItem = menu.add(item.getGroupId(),
            item.getItemId(),
            order,
            item.getTitle());
    menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    if (isClick)
        // set custom menu item click
        menuItem.setOnMenuItemClickListener(this);

【讨论】:

以上是关于如何覆盖 webview 的文本选择上下文菜单?的主要内容,如果未能解决你的问题,请参考以下文章

覆盖Android中文本选择(在WebView中)的默认上下文操作栏

如何在android中覆盖网页视图文本选择菜单

如何在 WebView 文本选择菜单中保留标准的“全选”和“复制”菜单项?

android webview:防止文本选择actionMode actionBar

如何覆盖右键单击 WebView2 控件时出现的 ContextMenu?

在Android的WebView中修改选择时文本选择菜单消失