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

时间:2015-06-30 10:38:40

标签: android webview contextmenu

我有一个要求,比如当我长按网页视图中的文字时点击长按,我应该设置我的自定义上下文菜单项而不是"选择","选择全部&# 34;,"网络搜索"。

请帮帮我。

enter image description here

想要覆盖这些默认"选择所有","复制","分享","网络搜索"。在这个地方想要我的自定义菜单。

2 个答案:

答案 0 :(得分:3)

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

请参阅Use a custom contextual action bar for WebView text selection

答案 1 :(得分:3)

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

@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);
}