我正在编写记事本应用程序,其中我有滑块菜单显示一些文本格式面板。当用户尝试选择某些文本时,我切换此面板的视图,因此我将菜单切换代码实现到我的EditText的setCustomSelectionActionModeCallback()中,如下所示:
private void manageContextMenuBar(EditText editText) {
editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return true;
}
// There menu is hidden
public void onDestroyActionMode(ActionMode mode) {
if (findViewById(R.id.sliderMenu).getVisibility() == View.VISIBLE) {
findViewById(R.id.sliderMenu).setVisibility(View.GONE);
}
}
// There menu shows up
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
if (findViewById(R.id.sliderMenu).getVisibility() == View.GONE) {
findViewById(R.id.sliderMenu).setVisibility(View.VISIBLE);
}
return true;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return true;
}
});
}
当我长时间点击文本时,我会显示格式菜单,还有软件上下文菜单,上面有粘贴/复制/剪切按钮。
问题是因为我的" Overriding"上下文菜单功能,他们停止工作。我可以点击按钮,但它们无法正常工作。
我希望你能理解我的问题 任何帮助将不胜感激:)
答案 0 :(得分:1)
您应该return false
方法onActionItemClicked
。这样,当您单击这些菜单项时,Android会使用默认操作。
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
来自onActionItemClicked
方法文档:
Returns: true if this callback handled the event, false if the standard MenuItem invocation should continue.