Actualización : para crear un menú emergente en Android con Kotlin, consulte mi respuesta aquí .
Para crear un menú emergente en Android con Java:
Cree un archivo de diseño activity_main.xml
en el res/layout
directorio que contenga solo un botón.
Nombre del archivo: 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>
Crear un archivo popup_menu.xml
en el res/menu
directorio
Contiene tres elementos como se muestra a continuación.
Nombre del archivo: 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>
Clase MainActivity que muestra el menú emergente al hacer clic en el botón.
Nombre del archivo: 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
}
}
Para agregar mediante programación:
PopupMenu menu = new PopupMenu(this, view);
menu.getMenu().add("One");
menu.getMenu().add("Two");
menu.getMenu().add("Three");
menu.show();
Siga este enlace para crear un menú mediante programación.
Sé que esta es una pregunta antigua, pero encontré otra respuesta que funcionó mejor para mí y no parece aparecer en ninguna de las respuestas.
Crea un diseño xml:
Cree una ListPopupWindow y un mapa con el contenido:
Luego, al hacer clic, muestre el menú con esta función:
fuente
El camino de Kotlin
ACTUALIZACIÓN: en el código anterior, la función de aplicación devuelve lo
this
que no es necesario, por lo que podemos usarrun
lo que no devuelve nada y, para hacerlo aún más simple, también podemos eliminar las llaves del método showPopupMenu.Aún más simple:
fuente
Primero, cree una carpeta llamada "menú" en la carpeta "res".
Luego, crea tu clase de actividad:
fuente