Comment afficher les éléments de menu de débordement dans la barre D'Action dans Android

J'écris une application Android dans laquelle j'essaie de afficher les éléments de menu de débordement dans ActionBar

En utilisant ce lien tutoriel:http://wptrafficanalyzer.in/blog/adding-action-items-and-overflow-menu-items-to-action-bar-in-android/

Problème:

Not getting Overflow Menu Items (Icon)

Veuillez consulter la capture d'écran ci-dessous pour plus de clarté: entrez la description de l'image ici

Manifeste.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"              
        >

Articles.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>

J'utilise ce tutoriel, et j'essaie de faire Figure 6: Action menu éléments et débordement dans la barre D'Action Split

Veuillez m'aider à afficher les éléments de menu de débordement (icône) dans ActionBar

Maintenant, chaque fois que je clique sur le bouton de Menu dans l'émulateur, alors je reçois des éléments de Menu rest ....

28
demandé sur Babu 2013-03-19 10:22:53

7 réponses

Pour afficher l'icône à trois points, dans la barre d'Action, utilisez simplement la méthode ci-dessous dans votre 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();
   }
 }
46
répondu ASMUIRTI 2013-03-19 07:22:12

Juste pour dire que si votre appareil a un bouton de menu, l'icône de débordement ne s'affichera pas, sur les nouveaux téléphones, le bouton de débordement s'affichera. Je ne recommanderais pas la réponse D'ASMUIRTI car c'est un hack terrible qui rompt la cohérence avec le reste des applications sur la plate-forme.

, Vous devez utiliser

android:showAsAction="never"

Et laissez l'appareil android décider si le menu de débordement est nécessaire pour cet appareil.

57
répondu Akshat Agarwal 2013-10-28 15:45:05

Cela pourrait être un autre travail autour, ce qui m'a vraiment aidé. Gardez un drawable avec trois points et donnez - le comme un élément de menu.

 <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
répondu Rino 2014-04-04 06:32:29

Si je comprends bien votre question et que vous souhaitez afficher toutes vos icônes sur la barre d'action, modifiez ces paramètres dans vos éléments de menu

android:showAsAction="ifRoom|withText"

À ce

android:showAsAction="always"
1
répondu Neil 2013-03-19 06:31:13

Si vous utilisez des bibliothèques de prise en charge, pour afficher les éléments de menu dans la barre d'action, vous devez utiliser la syntaxe suivante dans votre xml:

yourappname:showAsAction="ifRoom|withText"
1
répondu Mohammad 2014-01-26 05:35:58

Les téléphones qui ont le bouton matériel de menu affichent des éléments de menu supplémentaires en cliquant sur le bouton matériel. Les nouveaux téléphones, sans bouton de menu matériel ajouter automatiquement une icône de menu de débordement à la barre d'Action. Les éléments de menu supplémentaires sont ceux qui ont la propriété" showAsAction " définie sur Jamais.

0
répondu v01d 2014-09-11 18:34:54

Dans AndroidManifest.xml entre les ajouter

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

, Qui ajoute la barre d'action dans votre application.

Après cela, allez au menu.xml et ajouter les éléments suivants

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

Entre Enfin dans chaque élément Ajouter

android:showAsAction="always"
tools:ignore="AppCompatResource"
0
répondu KostasA 2015-03-14 16:24:14