版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34447328/article/details/84852956
最近有一个需求,当长按点击webview,弹出菜单栏,这是系统默认的有复制,全选,搜索等功能,而不能满足公司需求,同时公司需要将分享和搜索功能去掉,添加自己的菜单:
添加自己的功能,自定义webview,复写下边两个方法:
@Override public ActionMode startActionMode(ActionMode.Callback callback) { ActionMode actionMode = super.startActionMode(callback); return actionMode(actionMode); } @Override public ActionMode startActionMode(ActionMode.Callback callback, int type) { ActionMode actionMode = super.startActionMode(callback, type); return actionMode(actionMode); } private ActionMode actionMode(ActionMode actionMode) { if (actionMode != null) { final Menu menu = actionMode.getMenu(); for (int i = 0; i <3; i++) { menu.add("菜单"); } for (int i = 0; i < menu.size(); i++) { MenuItem menuItem = menu.getItem(i); menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Toast.makeText(mContext,item.getTitle().toString(),Toast.LENGTH_LONG).show(); return false; } }); } } return actionMode; }
禁用系统的菜单时,在Activity复写此方法(注意,这里用menu.clear()方法,再次选择无效):
@Override public void onActionModeStarted(ActionMode mode) { Menu menu = mode.getMenu(); for (int i = (menu.size() - 1); i >= 0; i--) { menu.removeItem(menu.getItem(i).getItemId()); } super.onActionModeStarted(mode); }