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

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

请帮帮我。

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

【问题讨论】:

标签: android webview contextmenu


【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2013-02-28
      • 2013-06-06
      • 2015-09-27
      • 2018-02-20
      • 1970-01-01
      相关资源
      最近更新 更多