Menú emergente en Android con ejemplo

Experiencias suaves y consistentes para los usuarios En Android, tenemos tres tipos de menús disponibles para definir un conjunto de opciones y acciones en nuestras aplicaciones de Android. Los Menús en aplicaciones android son los siguientes:

Entonces, en este artículo, vamos a discutir el menú emergente. Un menú emergente muestra un menú en una ventana emergente anclada a una vista . La ventana emergente se mostrará debajo de la Vista anclada si hay espacio (espacio), de lo contrario, arriba de la Vista. Si cualquier IME (Editor de métodos de entrada) está visible, la ventana emergente no se superpondrá hasta que se toque la Vista (a la que está anclada la ventana emergente). Si toca fuera de la ventana emergente, se cerrará.

Ejemplo

En este ejemplo, vamos a crear un menú emergente anclado a un botón y, al hacer clic, aparecerá el menú emergente y, al tocar el elemento del menú emergente, se mostrará un mensaje Toast . A continuación se proporciona un GIF de muestra para tener una idea de lo que vamos a hacer en este artículo. Tenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Java

Popup Menu in Android Sample GIF

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

En este paso, agregaremos un botón al archivo de diseño y le daremos una identificación como clickBtn.

XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <Button
        android:id="@+id/clickBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#0F9D58"
        android:text="Click Me"
        android:textColor="#ffffff"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
  
</androidx.constraintlayout.widget.ConstraintLayout>

Antes de continuar, agreguemos algunos atributos de color para mejorar la barra de la aplicación. Vaya a aplicación > res > valores > colores.xml y agregue los siguientes atributos de color. 

XML

<resources>
    <color name="colorPrimary">#0F9D58</color>
    <color name="colorPrimaryDark">#16E37F</color>
    <color name="colorAccent">#03DAC5</color>
</resources>

Paso 3: crear un directorio de menú y un archivo de menú

Primero, crearemos un director de menú que contendrá el archivo de menú. Vaya a aplicación > res > haga clic con el botón derecho en > Nuevo > Directorio de recursos de Android y proporcione el nombre del directorio y el tipo de recurso como menú.

Ahora, crearemos un archivo popup_menu dentro de ese directorio de recursos de menú. Vaya a aplicación > res > menú > haga clic con el botón derecho en > Nuevo > Archivo de recursos de menú y cree un archivo de recursos de menú y asígnele el nombre popup_menu. En el archivo popup_menu, agregaremos elementos de menú. A continuación se muestra el fragmento de código para el archivo popup_menu.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  
    <item
        android:id="@+id/java"
        android:title="Java" />
  
    <item
        android:id="@+id/kotlin"
        android:title="Kotlin" />
  
    <item
        android:id="@+id/android"
        android:title="Android" />
  
    <item
        android:id="@+id/react_native"
        android:title="React Native" />
  
</menu>

Paso 4: trabajar con el archivo MainActivity.java

En el archivo MainActivity.java , obtendremos la referencia del Botón y lo inicializaremos. Agregue el comportamiento onClick al botón e infle el menú emergente. A continuación se muestra el fragmento de código del archivo MainActivity.java .

Java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Toast;
  
public class MainActivity extends AppCompatActivity {
  
    Button button;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // Referencing and Initializing the button
        button = (Button) findViewById(R.id.clickBtn);
          
          // Setting onClick behavior to the button
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Initializing the popup menu and giving the reference as current context
                PopupMenu popupMenu = new PopupMenu(MainActivity.this, button);
                  
                  // Inflating popup menu from popup_menu.xml file
                popupMenu.getMenuInflater().inflate(R.menu.popup_menu, popupMenu.getMenu());
                popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem menuItem) {
                        // Toast message on menu item clicked
                        Toast.makeText(MainActivity.this, "You Clicked " + menuItem.getTitle(), Toast.LENGTH_SHORT).show();
                        return true;
                    }
                });
                // Showing the popup menu
                popupMenu.show();
            }
        });
    }
}

Salida: ejecutar en el emulador

Publicación traducida automáticamente

Artículo escrito por ankur035 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *