34 votes

Comment forcer le menu de débordement sur Android Actionbar compat?

Barre d'action Android compat
C'est possible? Sur les appareils plus anciens (antérieurs à 3.0), les éléments qui ne correspondent pas à la barre d'action ne sont affichés que lorsque la touche de menu est enfoncée. Je souhaite que ces éléments soient regroupés dans le menu de débordement de la barre d'action.

46voto

esilac Points 721

L'action de débordement de menu n'est disponible que lorsqu'il n'y a pas de bouton de menu disponibles sur le périphérique. J'ai trouvé ceci dit, dans le Cadre des Sujets en vertu de l'Interface Utilisateur > Barre d'Action, découvrez la 3ème balle ici.

Il y a une barre d'action de la bibliothèque écrit par Jake Wharton appelé ActionBarSherlock. C'est peut-être en mesure de vous fournir une action de débordement de style de menu, même quand sur les appareils plus anciens (qui comprennent un dur bouton de menu), mais je n'ai pas regardé dans cette.

Edit: ActionBarSherlock 4.0 (actuellement une version release candidate) a des fonctionnalités intégrées dans la force de l'action de débordement. Si vous souhaitez étendre la ActionBarCompat exemple vous-même, vous pouvez prendre un coup d'oeil sur github, pour obtenir une idée de comment Jake mise en œuvre. Je dirais juste à la recherche à l'aide de sa bibliothèque, tous ensemble, comme il est très bien fait.

Si vous choisissez d'utiliser de Jake bibliothèque, regarder dans la configuration de l'Activité thème comme @style/Thème.Sherlock.ForceOverflow pour forcer le menu de dépassement sur les appareils plus anciens.

Edit2: à l'Aide de ForceOverflow thème causes des problèmes (exemple #1) sur les appareils équipés du matériel le bouton menu. Ainsi, Jake Wharton va supprimer ForceOverflow dans les versions futures.

12voto

LeviRockerSk8er Points 556

Ok, c'est simple mais difficile à comprendre.

Il faut d'abord un élément de menu que vous souhaitez utiliser comme le dépassement de inflater. Exemple

<item
        android:id="@+id/a_More"
        android:icon="@drawable/more"
        android:showAsAction="always"
        android:title="More">
        </item>

Une fois que vous avez votre article, ajouter un sous-menu contenant vos éléments que vous voulez dans le menu contextuel. Exemple:

<item
    android:id="@+id/a_More"
    android:icon="@drawable/more"
    android:showAsAction="always"
    android:title="More">
    <menu>
        <item
            android:id="@+id/aM_Home"
            android:icon="@drawable/home"
            android:title="Home"/>
    </menu>
</item>

Cliquez sur ce fait gonfler d'autres éléments à l'intérieur. Mon application utilise ActionBarSherlock 4.0 donc avant que cela ne fonctionne pour vous, vous aurez besoin pour accéder à la "SplitActionBar". (Fonctionnera toujours sur android par défaut Actionbar)

Voici comment: Dans votre AndroidManifest.xml fichier, vous devez ajouter ce code en vertu de l'activité, vous devez le menu de dépassement dans. Honnêtement, il ne compte pas si vous avez l'actionbar split ou pas, mais je la préfère.

android:uiOptions="splitActionBarWhenNarrow"

REMARQUE: Votre article qui gonfle votre menu de dépassement DOIT showAsAction="always"

Vwola! vous avez un menu de dépassement! Espère que j'ai aidé. :)

6voto

harrakiss Points 416

Suite à la suggestion de LeviRockerSk8er, j'ai forcé un menu de débordement dans la barre d'action comme ceci:

C'est le code pour "menu.xml":

 <item
    android:id="@+id/web_clasica"
    android:icon="@drawable/ic_action_web_site"
    android:showAsAction="ifRoom"
    android:title="@string/menu_web"
    />
<item
    android:id="@+id/overflow_fijo"
    android:icon="@drawable/ic_action_core_overflow"
    android:showAsAction="always"
    android:title="@string/menu_email"
   >
   <menu>
    <item
    android:id="@+id/email"
    android:icon="@drawable/ic_action_new_email"
    android:showAsAction="ifRoom"
    android:title="@string/menu_email"
   />
    <item
    android:id="@+id/share"
    android:icon="@drawable/ic_action_share"
    android:showAsAction="ifRoom"
    android:title="@string/menu_share"
    />
    <item
    android:id="@+id/about"
    android:showAsAction="ifRoom"
     android:icon="@drawable/ic_action_action_about"
    android:title="@string/menu_about"/>
</menu>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X