私はAndroid私がオーバーフローメニュー項目をActionBarに表示しようとしているアプリアプリを書いています
この優れたチュートリアルリンクを使用: http://wptrafficanalyzer.in/blog/adding-action-items-and-overflow-menu-items-to-action-bar-in-Android/
問題:
Not getting Overflow Menu Items (Icon)
詳細については、以下のスクリーンショットを参照してください。
Manifest.xml:
<uses-sdk Android:minSdkVersion="14" />
<application
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name" >
<activity
Android:name=".MainActivity"
Android:label="@string/app_name"
Android:uiOptions="splitActionBarWhenNarrow"
>
items.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item
Android:id="@+id/phone"
Android:title="@string/phone"
Android:icon="@drawable/phone"
Android:showAsAction="ifRoom|withText"
/>
<item
Android:id="@+id/computer"
Android:title="@string/computer"
Android:icon="@drawable/computer"
Android:showAsAction="ifRoom|withText"
/>
<item
Android:id="@+id/gamepad"
Android:title="@string/gamepad"
Android:icon="@drawable/gamepad"
Android:showAsAction="ifRoom|withText"
/>
<item
Android:id="@+id/camera"
Android:title="@string/camera"
Android:icon="@drawable/camera"
Android:showAsAction="ifRoom|withText"
/>
<item
Android:id="@+id/video"
Android:title="@string/video"
Android:icon="@drawable/video"
Android:showAsAction="ifRoom|withText"
/>
<item
Android:id="@+id/email"
Android:title="@string/email"
Android:icon="@drawable/email"
Android:showAsAction="ifRoom|withText"
/>
</menu>
このチュートリアルを使用して、を作成しようとしています図6:分割アクションバーのアクション項目とオーバーフローメニュー
ActionBarにオーバーフローメニュー項目(ICON)を表示するのを手伝ってください
今、私はエミュレータでメニューボタンをクリックするたびに、残りのメニュー項目を取得しています....
アクションバーに3つのドットアイコンを表示するには、OnCreate()で以下のメソッドを使用します。
private void getOverflowMenu() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if(menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
デバイスにメニューボタンがある場合、オーバーフローアイコンは表示されませんが、新しい携帯電話ではオーバーフローボタンが表示されます。 ASMUIRTIの答えは、プラットフォーム上の他のアプリとの一貫性を壊す恐ろしいハックなのでお勧めしません。
あなたは使わなければなりません
Android:showAsAction="never"
そして、Androidデバイスに、そのデバイスにオーバーフローメニューが必要かどうかを決定させます。
これは別の回避策になる可能性があり、本当に助けになりました。 1つのドローアブルを3つのドットで保持し、メニュー項目として指定します。
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item
Android:id="@+id/saveDetails"
Android:showAsAction="always"
Android:title="@string/save"/>
<item
Android:id="@+id/menu_overflow"
Android:icon="@drawable/dts"
Android:orderInCategory="11111"
Android:showAsAction="always">
<menu>
<item
Android:id="@+id/contacts"
Android:showAsAction="never"
Android:title="Contacts"/>
<item
Android:id="@+id/service_Tasks"
Android:showAsAction="never"
Android:title="Service Tasks"/>
<item
Android:id="@+id/charge_summary"
Android:showAsAction="never"
Android:title="Charge Summary"/>
<item
Android:id="@+id/capture_signature"
Android:showAsAction="never"
Android:title="Capture Signature"/>
</menu>
</item>
</menu>
サポートライブラリから使用している場合、アクションバーにメニュー項目を表示するには、xmlの次の構文から使用する必要があります。
yourappname:showAsAction="ifRoom|withText"
あなたの質問を正しく理解し、アクションバーにすべてのアイコンを表示したい場合は、メニュー項目のこのパラメータを変更します
Android:showAsAction="ifRoom|withText"
これに
Android:showAsAction="always"
AndroidManifest.xml内の追加
Android:theme="@Android:style/Theme.Holo.Light"
これにより、アプリケーションにアクションバーが追加されます。
その後、menu.xmlに移動して、以下を追加します
xmlns:tools="http://schemas.Android.com/tools
最後に各アイテムで
Android:showAsAction="always"
tools:ignore="AppCompatResource"
メニューのハードウェアボタンがある電話機では、ハードウェアボタンをクリックすると追加のメニュー項目が表示されます。ハードウェアメニューボタンのない新しい携帯電話では、オーバーフローメニューアイコンがアクションバーに自動的に追加されます。追加のメニュー項目は、「showAsAction」プロパティがneverに設定されているものです。