📌  相关文章
📜  Android中的上下文菜单示例

📅  最后修改于: 2021-05-08 19:39:21             🧑  作者: Mango

在Android中,可以使用三种类型的菜单来定义Android应用程序中的一组选项和操作。 Android应用程序中的菜单列表如下:

  1. Android选项菜单
  2. Android上下文菜单
  3. Android弹出菜单

在本文中,我们将讨论Context Menu的详细信息。在Android中,上下文菜单就像一个浮动菜单,当用户长按或单击某个项目时会出现,并且有利于实现定义特定内容或参考框架效果的功能。 Android上下文菜单类似于Windows或Linux中的右键单击菜单。在Android系统中,上下文菜单提供了更改用户界面中特定元素或上下文框架的操作,并且可以为任何视图提供上下文菜单。上下文菜单将不支持任何对象快捷方式和对象图标。注意,我们将使用Java语言实现该项目。下面给出了一个示例GIF,以了解我们将在本文中做些什么

例子

步骤1:创建一个新项目

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

步骤2:使用activity_main.xml文件

打开res-> Layout-> activity_main.xml并编写以下代码。在此文件中,仅添加TextView来显示简单文本。

XML

  


  
    
  


Java
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
  
    TextView textView;
    RelativeLayout relativeLayout;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // Link those objects with their respective id's
        // that we have given in .XML file
        textView = (TextView) findViewById(R.id.textView);
        relativeLayout = (RelativeLayout) findViewById(R.id.relLayout);
  
        // here you have to register a view for context menu
        // you can register any view like listview, image view,
        // textview, button etc
        registerForContextMenu(textView);
  
    }
  
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        // you can set menu header with title icon etc
        menu.setHeaderTitle("Choose a color");
        // add menu items
        menu.add(0, v.getId(), 0, "Yellow");
        menu.add(0, v.getId(), 0, "Gray");
        menu.add(0, v.getId(), 0, "Cyan");
    }
  
    // menu item select listener
    @Override
    public boolean onContextItemSelected(MenuItem item) {
  
        if (item.getTitle() == "Yellow") {
            relativeLayout.setBackgroundColor(Color.YELLOW);
        } else if (item.getTitle() == "Gray") {
            relativeLayout.setBackgroundColor(Color.GRAY);
        } else if (item.getTitle() == "Cyan") {
            relativeLayout.setBackgroundColor(Color.CYAN);
        }
  
        return true;
    }
}


步骤3:使用Mainactivity。 Java文件

打开应用程序- >Java- >包装- > Mainactivity。 Java文件。在此步骤中,添加代码以显示ContextMenu。只要该应用程序分层显示,请在文本上长时间单击并显示用于特定目的的选项数量。在代码内部添加了注释,以更详细地了解代码。

Java

import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
  
    TextView textView;
    RelativeLayout relativeLayout;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // Link those objects with their respective id's
        // that we have given in .XML file
        textView = (TextView) findViewById(R.id.textView);
        relativeLayout = (RelativeLayout) findViewById(R.id.relLayout);
  
        // here you have to register a view for context menu
        // you can register any view like listview, image view,
        // textview, button etc
        registerForContextMenu(textView);
  
    }
  
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        // you can set menu header with title icon etc
        menu.setHeaderTitle("Choose a color");
        // add menu items
        menu.add(0, v.getId(), 0, "Yellow");
        menu.add(0, v.getId(), 0, "Gray");
        menu.add(0, v.getId(), 0, "Cyan");
    }
  
    // menu item select listener
    @Override
    public boolean onContextItemSelected(MenuItem item) {
  
        if (item.getTitle() == "Yellow") {
            relativeLayout.setBackgroundColor(Color.YELLOW);
        } else if (item.getTitle() == "Gray") {
            relativeLayout.setBackgroundColor(Color.GRAY);
        } else if (item.getTitle() == "Cyan") {
            relativeLayout.setBackgroundColor(Color.CYAN);
        }
  
        return true;
    }
}

输出:在模拟器上运行

现在,使用USB电缆或在仿真器中连接设备,然后启动应用程序。用户将看到一个文本。现在,长按文本将生成菜单选项,并选择其中一个以执行特定功能。

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