我正在为Android制作应用程序。当用户点击设备的硬件菜单按钮时,我想打开一个自定义弹出菜单,其中包含与我的活动相关的选项。根据android文档,只能进行上下文菜单和选项菜单,并且无法访问硬件菜单按钮的功能。怎么做?
答案 0 :(得分:1)
新的Android设备(运行3.0+)不再需要具有硬件菜单按钮(source)。您可以在this tutorial之后创建一个菜单。当您创建选项菜单时,应用程序将允许用户使用硬件菜单按钮打开它,如果他们的设备有一个。如果没有,则操作栏中将显示一个菜单按钮。 (source)。
如果您因任何原因需要检测按菜单按钮,可以通过覆盖onKeyUp(int, KeyEvent)
的{{1}}方法来执行此操作。
Activity
如果您需要在代码中打开菜单,可以调用@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
// do stuff
return true;
} else {
return super.onKeyUp(keyCode, event);
}
}
方法。
答案 1 :(得分: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);
}
}