webview長按點選實現彈出選單欄
阿新 • • 發佈:2019-01-12
最近有一個需求,當長按點選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); }