在 android 文本视图中选择文本时,上下文操作栏会出现复制、剪切、全选、共享等选项。有没有办法在我的应用程序中删除其中一些选项?
问问题
2558 次
2 回答
3
您可以扩充自己的菜单,然后隐藏操作系统插入的所有项目。
首先,跟踪菜单项的所有 ID:
List<Integer> mOptionsList = new ArrayList<Integer>();
/* put these two lines in onCreate() */
mOptionsList.add(R.id.my_option_1);
mOptionsList.add(R.id.my_option_2);
然后,在 onPrepare 中隐藏任何不属于您的 MenuItem:
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.my_contectual_menu, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
for (int i = 0; i < menu.size(); i++) {
MenuItem item = menu.getItem(i);
if (!mOptionsList.contains(item.getItemId()))
item.setVisible(false);
}
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.my_option_1: {
/* do something for option 1 */
break;
}
case R.id.my_option_2: {
/* do something for option 2 */
break;
}
default:
return false;
}
}
public void onDestroyActionMode(ActionMode mode) {}
};
于 2013-07-29T21:37:32.983 回答
0
如果要清除默认图标,只需使用 menu.clear()。例如修改上面的代码,我们有 private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.clear;
...
return true;
}
要删除特定图标,您需要拥有该图标的 id。它可能是 menu.removeItem(android.R.id.copy) 之类的东西。
于 2016-12-06T00:13:59.790 回答