📜  Android中的弹出菜单示例

📅  最后修改于: 2021-05-09 16:51:15             🧑  作者: Mango

在android中,菜单UI组件的重要组成部分,用于在应用程序周围提供一些常用功能。借助菜单 用户可以在整个应用程序中体验流畅,一致的体验在android中,我们有三种类型的菜单可用于在android应用程序中定义一组选项和操作。 android应用程序中的菜单如下:

  • Android选项菜单: Android选项菜单是android应用程序中菜单项的主要集合,对于对搜索应用程序产生全局影响的操作很有用。
  • Android上下文菜单: Android上下文菜单是一个浮动菜单用户长时间单击某个元素时才会显示,并且对影响所选内容或上下文框架的元素很有用
  • Android弹出菜单: Android弹出菜单在垂直列表中显示项目列表,该列表显示给调用菜单的视图,并有助于提供与特定内容相关的动作的溢出。

因此,在本文中,我们将讨论弹出菜单。 PopupMenu在锚定到视图的弹出窗口中显示菜单。如果在视图上方有空间,则弹出窗口将显示在锚定视图下方。如果有任何IME(输入法编辑器)可见,则弹出框将不会与之重叠,直到触摸到要固定弹出框的View为止。在弹出窗口外触摸将其关闭。

例子

在此示例中,我们将使弹出菜单锚定在Button上,并在单击时显示弹出菜单,并且在触摸弹出菜单项时将显示Toast消息。下面给出了一个示例GIF,以使我们对本文中要做的事情有一个了解。注意,我们将使用Java语言实现该项目。

Android示例GIF中的弹出菜单

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。

步骤2:使用activity_main.xml文件

在这一步中,我们将向布局文件添加一个按钮,并为其指定一个ID,即clickBtn。

XML


  
    


XML

    #0F9D58
    #16E37F
    #03DAC5


XML


  
    
  
    
  
    
  
    
  


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();
            }
        });
    }
}


在继续之前,让我们添加一些颜色属性以增强应用程序栏。转到应用程序> res>值> colors.xml并添加以下颜色属性。

XML格式


    #0F9D58
    #16E37F
    #03DAC5

步骤3:创建菜单目录和菜单文件

首先,我们将创建一个菜单向导,其中将包含菜单文件。转到应用程序> res>右键单击>新建> Android资源目录,然后将目录名称和资源类型作为菜单。

现在,我们将在该菜单资源目录中创建一个popup_menu文件。转到应用程序> res>菜单>右键单击>新建>菜单资源文件,然后创建一个菜单资源文件,并将其命名为popup_menu。在popup_menu文件中,我们将添加菜单项。以下是popup_menu.xml文件的代码段。

XML格式



  
    
  
    
  
    
  
    
  

步骤4:使用MainActivity。 Java文件

MainActivity中。 Java文件,我们将获取Button的引用并对其进行初始化。将onClick行为添加到该按钮,然后将弹出菜单添加到该按钮。以下是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();
            }
        });
    }
}

输出:在模拟器上运行

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处,前往由我们的专家精心策划的指南,以使您立即做好行业准备!