我想实现自己的自定义视图(不夸大菜单项),我打算每次contextMenu启动时都使用工具栏,并在完成后隐藏它。
问题是:只有答案显示如何通过默认的actionMode菜单清除/充气另一个菜单
到目前为止我尝试了什么:
- > Use a custom contextual action bar for WebView text selection
覆盖WebView的回调
@Override
public ActionMode startActionMode(ActionMode.Callback callback) {
callback2 = new customCallBack();
return super.startActionMode(callback2);
}
public class customCallBack implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
}
将return false更改为true,不会产生所需的行为,即隐藏cab
覆盖OnLongClick
也不是一个选项,因为它会禁用当前选择。
答案 0 :(得分:2)
这个答案解决了这个问题: android webview: prevent text selection actionMode actionBar
不是最优雅的解决方案,但我只是在我建造的应用程序中测试它,它就像一个魅力。
答案 1 :(得分:1)
对我有用的唯一方法(仅在Android L +上)清除活动中上下文操作栏中的所有菜单项
@Override
public void onActionModeStarted(ActionMode mode) {
if (mActionMode == null) {
mActionMode = mode;
Menu menu = mode.getMenu();
// Remove the default menu items (select all, copy, paste, search)
menu.clear();
}
Toast.makeText(this, "onActionModeStarted", Toast.LENGTH_SHORT).show();
super.onActionModeStarted(mode);
}
@Override
public void onActionModeFinished(ActionMode mode) {
mActionMode = null;
Toast.makeText(this, "onActionModeFinished", Toast.LENGTH_SHORT).show();
super.onActionModeFinished(mode);
}
受到Use a custom contextual action bar for WebView text selection
的启发此外,我无法使用popupWindow或对话框或对话框片段实现自定义菜单。
所以简单地将它与webView放在一个框架布局中,然后播放它的可见性和边距