我正在为android制作一个应用程序。当用户单击设备的硬件菜单按钮时,我想打开一个自定义弹出菜单,其中包含与我的活动有关的选项。根据android文档,只能制作上下文菜单和选项菜单,无法访问硬件菜单按钮的功能。这个怎么做?
问问题
1352 次
2 回答
1
较新的 Android 设备(运行 3.0+)不再需要有硬件菜单按钮(source)。您可以按照本教程创建菜单。当您创建选项菜单时,如果用户的设备有硬件菜单按钮,该应用程序将允许用户使用硬件菜单按钮打开它。如果没有,则操作栏中将显示一个菜单按钮。(来源)。
onKeyUp(int, KeyEvent)
如果您出于某种原因需要检测按下菜单按钮,您可以通过覆盖Activity
.
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
// do stuff
return true;
} else {
return super.onKeyUp(keyCode, event);
}
}
如果需要从代码中打开菜单,可以调用该Activity.openOptionsMenu()
方法。
于 2013-05-07T17:25:45.560 回答
0
我的回答完全基于http://developer.android.com/guide/topics/ui/menus.html
请阅读该页面以获取有关如何执行此操作的完整信息、描述和更多知识
创建一个 XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:icon="@drawable/ic_new_game"
android:title="@string/new_game"
android:showAsAction="ifRoom"/>
<item android:id="@+id/help"
android:icon="@drawable/ic_help"
android:title="@string/help" />
</menu>
使用此代码显示它:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.game_menu, menu);
return true;
}
使用此代码处理点击:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
newGame();
return true;
case R.id.help:
showHelp();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
于 2013-05-07T18:22:31.880 回答