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é:
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 ....
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();
}
}
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.
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>
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"
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"
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.
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"