アプリでオプションメニューを使用しています。しかし、Galaxy Nexusにアプリをインストールすると、デフォルトでオプションメニューボタンがないため、オプションメニューが表示されません。Galaxy Nexusのみのアプリにオプションメニューボタンを表示するにはどうすればよいですか?他の電話では問題ありません。オプションメニューを取得できます。
4 に答える
Android 3.0 では、Google は専用のメニュー キーからActionBar
メニュー機能の使用に切り替えました。ビルド ターゲットが 3.0 以上の場合、メニューはデフォルトでActionBar
.
電話機にメニュー キーがある場合、通常はアクション バーの 3 つのドット アイコンで表示されるオーバー オーバー オプションは、代わりにメニュー ボタンで表示されます。電話にメニュー キーがない場合は、すべてのオプションがアクション バーに表示されます。メニュー キーが廃止されるActionBar
ため、3.0 以降のメニューでこのクラスを使用することをお勧めします。
現在、メニュー キーなしで新しいプラットフォームで実行される古いアプリは、最近のアプリ ボタンの横に偽のメニュー キーを生成します。この間に合わせのメニュー キーは、ビルド ターゲットが 2.3.4 以下の場合にのみ表示されます。これは、下位互換性の理由からのみ存在するためです。(編集: ビルド ターゲットは、API 13 未満、または API 13 を含む必要があります)
あなたの場合、ActionBar
新しいバージョンの Android に対してビルドしているため、メニューに を使用する必要があります。下位互換性が心配な場合は、いつでも ActionBarSherlock などのライブラリを利用して、古いプラットフォームでアクション バーを使用できます。
「オプション」ボタンが必要な理由を考える必要があります。これは古くて貧弱なパターンであり、ActionBar
実際にははるかに優れた に取って代わられました。
ただし、クライアントの理由で必要になる場合があります(クライアントのために保持する必要があるなど)。その場合は、以下の私のアドバイスに従うことができます(「アクションバー」と誤って言及したオリジナルから少し編集されています)
build target
ICS より前のバージョン (つまり、API 13 / HoneyComb 3.2 まで) に設定できます。
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="13" />
overflow
これにより、携帯電話の下部ボタン バーにアイコンを挿入する互換モード設定をシステムが使用するようになります。これにより、目的の機能が提供されるはずです。このボタンを押すと、たとえば Samsung Galaxy S2 の「メニュー」ボタンを押すのと同じ反応が得られます。
ここでは、互換性の「オプション」ボタンと、ボタンを押したときに表示されたメニューを確認できます。
ノート:
ActionBar
他のコメンテーターが言及しているように、パターンのより良い選択を検討する必要があります。下位互換性が必要な場合は、Action Bar Sherlock ライブラリをお勧めします。
しかし、迅速な修正を探している場合、またはクライアントが Action Bar パターンに移行するための大きなリファクタリングを行う余裕がない場合は、これがその方法です。
アクション バーを使用すると、オプション メニューはオーバーフローに置き換えられます。そうでない場合は、自分のアプリケーションのどこかに自分でボタンを実装する必要があります。
API 13 以下をターゲットとするアプリケーションの場合、メニュー ボタン (別名、Compatibility Menu of Shame ) はシステム バーにのみ表示されます。
デバイスにハードウェア メニュー キーがあるかどうかを確認する方法を次に示します。
// Menu key
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
hasPermanentMenuKey = hasPermanentMenuKey(context.getApplicationContext());
}
else {
// No way to know for sure...
// All devices before Honeycomb should have a menu key.
// Honeycomb device usually don't have one
hasPermanentMenuKey = Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB;
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private boolean hasPermanentMenuKey(Context context) {
return ViewConfiguration.get(context).hasPermanentMenuKey();
}
オプションメニューは、android バージョン 3.x (Honeycomb) から廃止されました。そのため、オプション メニュー ボタンが最新の電話に存在することは必須ではありません。アクションバーに行きます。ライブラリを使用Sherlock ActionBar
して、すべてのプラットフォームでアクション バーをサポートできます。
更新:ユーザーActionBarCompat