web-dev-qa-db-ja.com

Androidでオーバーフローメニュー項目をアクションバーに表示する方法

私はAndroid私がオーバーフローメニュー項目をActionBarに表示しようとしているアプリアプリを書いています

この優れたチュートリアルリンクを使用: http://wptrafficanalyzer.in/blog/adding-action-items-and-overflow-menu-items-to-action-bar-in-Android/

問題:

Not getting Overflow Menu Items (Icon)

詳細については、以下のスクリーンショットを参照してください。 enter image description here

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)を表示するのを手伝ってください

今、私はエミュレータでメニューボタンをクリックするたびに、残りのメニュー項目を取得しています....

28
Babu

アクションバーに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();
   }
 }
47
ASMUIRTI

デバイスにメニューボタンがある場合、オーバーフローアイコンは表示されませんが、新しい携帯電話ではオーバーフローボタンが表示されます。 ASMUIRTIの答えは、プラットフォーム上の他のアプリとの一貫性を壊す恐ろしいハックなのでお勧めしません。

あなたは使わなければなりません

Android:showAsAction="never"

そして、Androidデバイスに、そのデバイスにオーバーフローメニューが必要かどうかを決定させます。

57
Akshat Agarwal

これは別の回避策になる可能性があり、本当に助けになりました。 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>
12
Rino

サポートライブラリから使用している場合、アクションバーにメニュー項目を表示するには、xmlの次の構文から使用する必要があります。

yourappname:showAsAction="ifRoom|withText"
1
Mohammad

あなたの質問を正しく理解し、アクションバーにすべてのアイコンを表示したい場合は、メニュー項目のこのパラメータを変更します

Android:showAsAction="ifRoom|withText"

これに

Android:showAsAction="always"
1
Neil

AndroidManifest.xml内の追加

Android:theme="@Android:style/Theme.Holo.Light"

これにより、アプリケーションにアクションバーが追加されます。

その後、menu.xmlに移動して、以下を追加します

xmlns:tools="http://schemas.Android.com/tools

最後に各アイテムで

Android:showAsAction="always"
tools:ignore="AppCompatResource"
0
KostasA

メニューのハードウェアボタンがある電話機では、ハードウェアボタンをクリックすると追加のメニュー項目が表示されます。ハードウェアメニューボタンのない新しい携帯電話では、オーバーフローメニューアイコンがアクションバーに自動的に追加されます。追加のメニュー項目は、「showAsAction」プロパティがneverに設定されているものです。

0
v01d