web-dev-qa-db-fra.com

Comment puis-je afficher les éléments de menu de débordement dans la barre d'action sous Android

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

en utilisant ce super 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 vous reporter à la capture d'écran ci-dessous pour plus de clarté: 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>

J'utilise ce tutoriel et j'essaie de créer Figure 6: Actions et menu Dépassement dans la barre d'action divisée

Aidez-moi, s'il vous plaît, à afficher les éléments de menu de débordement (ICON) dans la barre d’action

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

28
Babu

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();
   }
 }
47
ASMUIRTI

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 il s'agit d'un piratage horrible qui rompt la cohérence avec le reste des applications de la plate-forme.

tu dois utiliser 

Android:showAsAction="never"

et laissez le périphérique Android décider si le menu de débordement est nécessaire pour ce périphérique.

57
Akshat Agarwal

Cela pourrait être un autre travail, ce qui m'a vraiment aidé. Gardez-en un dessinable avec trois points et donnez-le comme é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
Rino

Si vous utilisez des bibliothèques de support, pour afficher les éléments de menu dans la barre d’activités, vous devez utiliser la syntaxe suivante dans votre code xml:

yourappname:showAsAction="ifRoom|withText"
1
Mohammad

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

Android:showAsAction="ifRoom|withText"

pour ça

Android:showAsAction="always"
1
Neil

Dans AndroidManifest.xml entre add

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

ce qui ajoute la barre d'action dans votre application.

Après cela, allez dans menu.xml et ajoutez ce qui suit

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

entre Enfin dans chaque article ajouter

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

Les téléphones dotés d'un bouton de menu de menu affichent des éléments de menu supplémentaires en cliquant sur le bouton de matériel. Les téléphones plus récents, sans bouton de menu matériel, ajoutent automatiquement une icône de menu Dépassement à la barre d'actions . Les éléments de menu supplémentaires sont ceux pour lesquels la propriété "showAsAction" est définie sur jamais.

0
v01d