Dark Mode
Image

Android Fragments

Android Service

Android AlarmManager

Camera Tutorial

Sensor Tutorial

Android Graphics

Android Animation

Android Web Service

Android MCQ

Android Quiz

Context Menu

Android context menu appears when user press long click on the element. It is also known as floating menu.

It affects the selected content while doing action on it.

It doesn't support item shortcuts and icons.

Android Context Menu Example

Let's see the simple example of context menu in android.

activity_main.xml

Drag one listview from the pallete, now the xml file will look like this:

File: activity_main.xml

<?xml version="1.0" encoding="utf-8"?>  
<android.support.constraint.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="example.javatpoint.com.contextmenu.MainActivity">  
  
    <ListView  
        android:layout_width="368dp"  
        android:layout_height="495dp"  
        android:id="@+id/listView"  
        android:layout_marginEnd="8dp"  
        android:layout_marginStart="8dp"  
        android:layout_marginTop="8dp"  
        app:layout_constraintEnd_toEndOf="parent"  
        app:layout_constraintHorizontal_bias="0.0"  
        app:layout_constraintStart_toStartOf="parent"  
        app:layout_constraintTop_toTopOf="parent" />  
</android.support.constraint.ConstraintLayout>  

main_menu.xml

Create a separate menu_main.xml file in menu directory for menu items.

<?xml version="1.0" encoding="utf-8"?>  
<menu xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:id="@+id/call"  
        android:title="Call" />  
    <item android:id="@+id/sms"  
        android:title="SMS" />  
</menu>  

Activity class

Let's write the code to display the context menu on press of the listview.

File: MainActivity.java

package example.javatpoint.com.contextmenu;  
  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.ContextMenu;  
import android.view.MenuInflater;  
import android.view.MenuItem;  
import android.view.View;  
import android.widget.ArrayAdapter;  
import android.widget.ListView;  
import android.widget.Toast;  
  
public class MainActivity extends AppCompatActivity {  
    ListView listView;  
    String contacts[]={"Ajay","Sachin","Sumit","Tarun","Yogesh"};  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        listView=(ListView)findViewById(R.id.listView);  
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contacts);  
        listView.setAdapter(adapter);  
        // Register the ListView  for Context menu  
        registerForContextMenu(listView);  
    }  
    @Override  
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)  
    {  
        super.onCreateContextMenu(menu, v, menuInfo);  
        MenuInflater inflater = getMenuInflater();  
        inflater.inflate(R.menu.menu_main, menu);  
        menu.setHeaderTitle("Select The Action");  
    }  
    @Override  
    public boolean onContextItemSelected(MenuItem item){  
        if(item.getItemId()==R.id.call){  
            Toast.makeText(getApplicationContext(),"calling code",Toast.LENGTH_LONG).show();  
        }  
        else if(item.getItemId()==R.id.sms){  
            Toast.makeText(getApplicationContext(),"sending sms code",Toast.LENGTH_LONG).show();  
        }else{  
            return false;  
        }  
        return true;  
    }  
}  

Output:

android context menu example output 1

Output after long press on the listview.

android context menu example output 2

Output after clicking on the context menu.

android context menu example output 3

Comment / Reply From