0

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

4

2 回答 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 回答