Context Menu in Android with Example

In Android, there are three types of menus available to define a set of options and actions in the Android apps. The lists of menus in Android applications are the following:
- Android options menu
- Android context menu
- Android popup menu
Here in this article let’s discuss the detail of the Context Menu. In Android, the context menu is like a floating menu and arises when the user has long-pressed or clicked on an item and is beneficial for implementing functions that define the specific content or reference frame effect. The Android context menu is alike to the right-click menu in Windows or Linux. In the Android system, the context menu provides actions that change a specific element or context frame in the user interface and one can provide a context menu for any view. The context menu will not support any object shortcuts and object icons. A sample GIF is given below to get an idea about what we are going to do in this article.
Step By Step Implementation
Step 1: Create a New Project in Android Studio
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. The code for that has been given in both Java and Kotlin Programming Language for Android.
Step 2: Working with the XML Files
Open res -> Layout -> activity_main.xml and write the following code. In this file add only a TextView to display a simple text.
XML
<?xml version="1.0" encoding="utf-8"?><!-- Relative Layout to display all the details -->    android:id="@+id/relLayout"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#fff"    android:padding="16dp"    tools:context=".MainActivity">      <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_marginTop="20dp"        android:text="Long press me!"        android:textColor="#000"        android:textSize="20sp"        android:textStyle="bold" /></RelativeLayout> |
Step 3: Working with the MainActivity file
Open the app -> Java -> Package -> Mainactivity.java file. In this step, add the code to show the ContextMenu. Whenever the app will start make a long click on a text and display the number of options to select of them for specific purposes. Comments are added inside the code to understand the code in more detail.Â
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;    }} |
Kotlin
import android.graphics.Colorimport android.os.Bundleimport android.view.ContextMenuimport android.view.ContextMenu.ContextMenuInfoimport android.view.MenuItemimport android.view.Viewimport android.widget.RelativeLayoutimport android.widget.TextViewimport androidx.appcompat.app.AppCompatActivity  class MainActivity : AppCompatActivity() {    lateinit var textView: TextView    lateinit var relativeLayout: RelativeLayout          override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)          // Link those objects with their respective id's that we have given in .XML file        textView = findViewById(R.id.textView)        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 fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo) {        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.id, 0, "Yellow")        menu.add(0, v.id, 0, "Gray")        menu.add(0, v.id, 0, "Cyan")    }      // menu item select listener    override fun onContextItemSelected(item: MenuItem): Boolean {        if (item.title === "Yellow") {            relativeLayout.setBackgroundColor(Color.YELLOW)        } else if (item.title === "Gray") {            relativeLayout.setBackgroundColor(Color.GRAY)        } else if (item.title === "Cyan") {            relativeLayout.setBackgroundColor(Color.CYAN)        }        return true    }} |
Output: Run on Emulator
Now connect the device with a USB cable or in an Emulator and launch the application. The user will see a text. Now long pressing on the text will generate menu options and select one of them to perform specific functionality.




