[解決済み] Android 4.3 メニュー項目 showAsAction="always" を無視する。
2022-09-14 06:20:16
質問
Android 4.3 (API level 18) から利用可能になった新しい v7 appcompat ライブラリを使用しています。
メニュー項目の showAsAction で何が指定されているかに関係なく、表示されません。常にオーバーフローのメニュー アイコンが作成され、メニューの下に単一のメニュー項目さえ置かれます。
このようなアクティビティにメニューを追加しようとしています。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_sizes, menu);
return true;
}
そして、これが私のメニューxmlです。
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_add_size"
android:title="@string/menu_add_item"
android:orderInCategory="10"
android:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
</menu>
新しいサポートライブラリv7のバグなのか、それとも単にコードがおかしいのか? 今まで何度もActionBarSherlockで似たようなコードを使っていたのですが。
どのように解決するのですか?
必要な名前空間がない可能性があります。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:[yourapp]="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_add_size"
android:title="@string/menu_add_item"
android:orderInCategory="10"
[yourapp]:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
</menu>
置換
[yourapp]
をアプリ名や任意の名前空間に置き換えてください。
その他、確認すべきことがあります。
-
アクティビティクラスが
ActionBarActivity
問題が解決しないかどうかを確認します。
Androidのリファレンスドキュメントです。 アクションボタンの追加 . 以下、該当の文章です。
アプリが Android 2.1 より低いバージョンでの互換性のためにサポート ライブラリを使用している場合、showAsAction 属性は android: 名前空間から利用できません。その代わりに、この属性はサポート ライブラリによって提供され、独自の XML 名前空間を定義し、その名前空間を属性のプレフィックスとして使用する必要があります。(独自の XML 名前空間はアプリ名に基づいている必要がありますが、任意の名前にすることができ、宣言したファイルの範囲内でのみアクセス可能です)。
関連
-
[解決済み] アイテムの親を取得する際にエラーが発生しました。AppCompat v23にアップグレードした後、指定された名前に一致するリソースが見つかりません。
-
[解決済み] Androidの新しいActionBarをサポートするTheme.AppCompat.Lightが見つからない
-
[解決済み】アクションバーのメニュー項目を非表示にするには?
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] Android Navigation Architecture Component - 現在表示されているフラグメントを取得する
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] フラグメント間の値の受け渡し方法
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] Android Lintが翻訳されていない文字列を訴えないようにする。
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] android: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] ViewPagerのアイテムを強制的に再インスタンス化する方法 [重複].
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] 通知をクリックした後にアプリケーションを開く
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較