私はアンドロイド用のアプリを作っています。ユーザーがデバイスのハードウェア メニュー ボタンをクリックしたときに、アクティビティに関連するオプションを含むカスタム ポップアップ メニューを開きたいと考えています。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 に答える