我努力做同样的事情,这就是最终的工作.基本上,我没有显示选项菜单,而是使用了上下文菜单.
首先,您需要捕获菜单键并使其显示上下文菜单:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
View view = findViewById(R.id.for_context);
registerForContextMenu(view);
openContextMenu(view);
unregisterForContextMenu(view);
return true;
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
您必须将此上下文菜单附加到窗口中的视图,任何没有自己的实际上下文菜单的视图.我使用了窗口中的一个布局.
然后,膨胀菜单:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
if (v instanceof TableLayout) {
inflater.inflate(R.menu.my_context_menu, menu);
}
}
Run Code Online (Sandbox Code Playgroud)
my_context_menu.xml的定义与选项菜单完全相同.
最后一步是处理onContextItemSelected(MenuItem项)中的菜单按下,您可以将其重定向到onOptionsItemSelected(MenuItem项).
当然,这仅适用于您希望像上下文菜单一样显示菜单:没有图标,只有垂直列表中的菜单标签.
| 归档时间: |
|
| 查看次数: |
3372 次 |
| 最近记录: |