在android中,菜单是UI组件的重要组成部分,用于在应用程序周围提供一些常用功能。借助菜单, 用户可以在整个应用程序中体验流畅,一致的体验。在android中,我们有三种类型的菜单可用于在android应用程序中定义一组选项和操作。 android应用程序中的菜单如下:
- Android选项菜单: Android选项菜单是android应用程序中菜单项的主要集合,对于对搜索应用程序产生全局影响的操作很有用。
- Android上下文菜单: Android上下文菜单是一个浮动菜单,仅在用户长时间单击某个元素时才会显示,并且对影响所选内容或上下文框架的元素很有用。
- Android弹出菜单: Android弹出菜单在垂直列表中显示项目列表,该列表显示给调用菜单的视图,并有助于提供与特定内容相关的动作的溢出。
因此,在本文中,我们将讨论弹出菜单。 PopupMenu在锚定到视图的弹出窗口中显示菜单。如果在视图上方有空间,则弹出窗口将显示在锚定视图下方。如果有任何IME(输入法编辑器)可见,则弹出框将不会与之重叠,直到触摸到要固定弹出框的View为止。在弹出窗口外触摸将其关闭。
例子
在此示例中,我们将使弹出菜单锚定在Button上,并在单击时显示弹出菜单,并且在触摸弹出菜单项时将显示Toast消息。下面给出了一个示例GIF,以使我们对本文中要做的事情有一个了解。注意,我们将使用Java语言实现该项目。
分步实施
步骤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();
}
});
}
}