Comment obtenir le petit triangle indicateur à l'action personnalisée dans ActionBar?
-
27-10-2019 - |
Question
Comment obtenir le petit triangle gris (indiquant un fileur / sous-menus habituellement) à une action personnalisée dans le ActionBar? Je parviens à ajouter à mon action sous-menus, mais ne vois pas un moyen d'ajouter le petit triangle dans le coin inférieur droit. (Même lors de l'utilisation android.widget.ShareActionProvider)
Comment je le veux (exemple de l'API Demos):
Je suis en mesure de modifier les sous-menus, mais pas obtenir le petit triangle gris en bas à droite de mon icône d'action:
Mon code pour le menu:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_new_form"
android:icon="@drawable/ic_new_form"
android:title="@string/menu_new_form"
android:showAsAction="ifRoom|withText">
<menu>
<item android:id="@+id/action_sort_size"
android:icon="@android:drawable/ic_menu_sort_by_size"
android:title="Form 1"
android:onClick="onSort" />
<item android:id="@+id/action_sort_alpha"
android:icon="@android:drawable/ic_menu_sort_alphabetically"
android:title="Form 2"
android:onClick="onSort" />
</menu>
</item>
</menu>
La solution
J'ai vérifié dans les sources d'Android, et voici comment mettre en œuvre Google:
(il est ic_menu_share_holo_light.png)
Donc, si Google dessine ce petit triangle directement dans l'image de l'icône, je suppose que c'est la meilleure pratique actuellement.
Autres conseils
Ce triangle gris dans la première image est disponible lorsque vous définissez un bouton pour démarrer l'activité en utilisant Intent.createChooser(intent, "heading")
.
Cependant, dans votre technique, vous fournissez une option de menu qui contient des sous-menus. Pour faire simple, vous pouvez simplement créer une icône qui a un triangle gris en bas.
exemple de partager un message en demandant à l'utilisateur de choisir l'option:
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_SUBJECT, note.getHead());
share.putExtra(Intent.EXTRA_TEXT, "this is a demo message");
context.startActivity(Intent.createChooser(share, "Share message"));