Mise à jour : Pour créer un menu contextuel sous Android avec Kotlin, reportez-vous à ma réponse ici .
Pour créer un menu contextuel sous Android avec Java:
Créez un fichier de mise en page activity_main.xml
sous le res/layout
répertoire qui ne contient qu'un seul bouton.
Nom de fichier: activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="62dp"
android:layout_marginTop="50dp"
android:text="Show Popup" />
</RelativeLayout>
Créer un fichier popup_menu.xml
sous res/menu
répertoire
Il contient trois éléments comme indiqué ci-dessous.
Nom de fichier: poupup_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/one"
android:title="One"/>
<item
android:id="@+id/two"
android:title="Two"/>
<item
android:id="@+id/three"
android:title="Three"/>
</menu>
Classe MainActivity qui affiche le menu contextuel lors d'un clic sur le bouton.
Nom de fichier: MainActivity.java
public class MainActivity extends Activity {
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(MainActivity.this, button1);
//Inflating the Popup using xml file
popup.getMenuInflater()
.inflate(R.menu.popup_menu, popup.getMenu());
//registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(
MainActivity.this,
"You Clicked : " + item.getTitle(),
Toast.LENGTH_SHORT
).show();
return true;
}
});
popup.show(); //showing popup menu
}
}); //closing the setOnClickListener method
}
}
Pour ajouter par programme:
PopupMenu menu = new PopupMenu(this, view);
menu.getMenu().add("One");
menu.getMenu().add("Two");
menu.getMenu().add("Three");
menu.show();
Suivez ce lien pour créer un menu par programmation.
Je sais que c'est une vieille question, mais j'ai trouvé une autre réponse qui a mieux fonctionné pour moi et qui ne semble apparaître dans aucune des réponses.
Créez une mise en page xml:
Créez une ListPopupWindow et une carte avec le contenu:
Puis au clic, affichez le menu en utilisant cette fonction:
la source
La voie Kotlin
MISE À JOUR: Dans le code ci-dessus, la fonction apply renvoie
this
ce qui n'est pas obligatoire, nous pouvons donc utiliserrun
ce qui ne renvoie rien et pour le rendre encore plus simple, nous pouvons également supprimer les accolades de la méthode showPopupMenu.Encore plus simple:
la source
Commencez par créer un dossier nommé «menu» dans le dossier «res».
Ensuite, créez votre classe d'activité:
la source