【发布时间】:2015-09-17 02:47:34
【问题描述】:
我有一个要求,比如当我通过单击长按来长按 Web 视图中的文本时,我应该设置我的自定义上下文菜单项,而不是“选择”、“全选”、“网络搜索”。
请帮帮我。
想要覆盖这些默认的“全选”、“复制”、“共享”、“网络搜索”。在这个地方想放置我的自定义菜单。
【问题讨论】:
-
看看this问题。
标签: android webview contextmenu
我有一个要求,比如当我通过单击长按来长按 Web 视图中的文本时,我应该设置我的自定义上下文菜单项,而不是“选择”、“全选”、“网络搜索”。
请帮帮我。
想要覆盖这些默认的“全选”、“复制”、“共享”、“网络搜索”。在这个地方想放置我的自定义菜单。
【问题讨论】:
标签: android webview contextmenu
不幸的是,您需要从 WebView 类扩展并覆盖 onCreateContextMenu 方法。
见Use a custom contextual action bar for WebView text selection
【讨论】:
你可以在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);
}
【讨论】: