Ce n'est pas du tout un widget. Il s'agit d'un ImageButton
(style sans bordure) utilisant l'icône de débordement qui inclut un PopupMenu
Pour les visites du didacticiel de documentation http://developer.Android.com/guide/topics/ui/menus.html#PopupMen
Cela se réfère à un extrait de code Nice du lien ci-dessus:
<ImageButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/ic_overflow_holo_dark"
Android:contentDescription="@string/descr_overflow_button"
Android:onClick="showPopup" />
Ensuite, utilisez pour afficher une fenêtre contextuelle:
public void showPopup(View v) {
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.actions, popup.getMenu());
popup.show();
}
Le bouton 3 points est disponible parmi les actifs dans Android Studio:
Faites un clic droit sur res
-> Nouveau -> Actifs vectoriels -> Type d'actif = Clip Art
-> Cliquez sur le bouton à côté de Clip Art: label -> Rechercher plus vert
Vous pouvez également simplement utiliser un ImageButton
avec l'attribut de style actionOverflowButtonStyle
.
<ImageButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
style="?android:attr/actionOverflowButtonStyle"/>
Le widget "original" à trois points est le Android.widget.ActionMenuPresenter.OverflowMenuButton
( ActionMenuPresenter.Java ). Malheureusement, c'est une classe privée. Voici une version plus courte de travail:
public class OverflowMenuButton extends AppCompatImageView
{
public OverflowMenuButton(Context context)
{
this(context, null);
}
public OverflowMenuButton(Context context, AttributeSet attrs)
{
this(context, attrs, 0);
}
public OverflowMenuButton(Context context, AttributeSet attrs, int defStyleAttr)
{
super(new ContextThemeWrapper(context, R.style.OverflowButtonTheme), attrs, R.attr.actionOverflowButtonStyle);
setClickable(true);
setFocusable(true);
setVisibility(VISIBLE);
setEnabled(true);
}
}
Thèmes du ContextThemeWrapper
pour obtenir une version sombre et claire:
<!--White dots theme-->
<style name="OverflowButtonTheme" parent="@style/Theme.AppCompat">
<item name="actionOverflowButtonStyle">@style/Widget.AppCompat.ActionButton.Overflow</item>
</style>
<!--Dark dots theme-->
<style name="OverflowButtonThemeLight" parent="@style/Theme.AppCompat.Light">
<item name="actionOverflowButtonStyle">@style/Widget.AppCompat.Light.ActionButton.Overflow</item>
</style>
<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:width="24dp"
Android:height="24dp"
Android:viewportWidth="24.0"
Android:viewportHeight="24.0">
<path
Android:fillColor="#FF000000"
Android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zm0,2c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zm0,6c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
</vector>
Comme je l'ai trouvé sur le Web, cela s'appelle "icône de débordement" ou débordement d'action ".
Ce code pourrait peut-être vous aider. (Le code est de là )
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item
Android:id="@+id/menu_red"
Android:orderInCategory="1"
Android:showAsAction="never"
Android:title="@string/red_string"/>
<item
Android:id="@+id/menu_green"
Android:orderInCategory="2"
Android:showAsAction="never"
Android:title="@string/green_string"/>
</menu>