web-dev-qa-db-fra.com

Quel est le nom du petit widget avec trois points dans une vue de carte dans Android?

enter image description here

Quel est le petit widget à trois points? Comment puis-je l'ajouter à mon application?

37
Cristian

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

enter image description here

50
kandroidj

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"/>
35
Nit

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>
3
user1185087
<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>
1
Krzysztof Dziuba

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 )

<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>
0
scummy