【发布时间】:2018-04-03 10:10:27
【问题描述】:
我通过此代码添加了一个自定义上下文菜单。
ns_text_menu.xml 只包含两项。
this.textViewTest.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.clear();
mode.setTitle("Menu");
mode.getMenuInflater().inflate(R.menu.ns_text_menu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (item.getTitle().equals("View Vocab")) {
ErrorController.showToast(mContext, "View Vocab : " + textViewTest.getText().toString().substring(textViewTest.getSelectionStart(), textViewTest.getSelectionEnd()));
}else{//cpy
ErrorController.showToast(mContext, "Copy : " + textViewTest.getSelectionStart() + ", " + textViewTest.getSelectionEnd());
}
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
});
正如这个答案(Remove default CAB items in TextView selection ActionMode)中提到的,我使用了代码
menu.clear();
在 onCreateActionMode 上清除默认 CAB 菜单。它清除了一些默认的上下文菜单,但仍然保留了这两个菜单:
“全选”和“字典”。
测试机是galaxy s9+(android 8.0),nexus模拟器(6.0)。
它们都显示了意想不到的菜单。
我该如何解决这个问题?
【问题讨论】: