如何将功能添加到与硬件菜单按钮相关的菜单?

时间:2013-05-07 17:24:25

标签: android menu

我正在为Android制作应用程序。当用户点击设备的硬件菜单按钮时,我想打开一个自定义弹出菜单,其中包含与我的活动相关的选项。根据android文档,只能进行上下文菜单和选项菜单,并且无法访问硬件菜单按钮的功能。怎么做?

2 个答案:

答案 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);
    }
}