Anasayfa » Android » Android Context Menu

Android Context Menu

Context Menü herhangi bir menüye basılı tuttuğumuzda karşımıza çıkan menüye denir.
Context menu Options Menüyede benzer. options menülerden farkı ise, options menü sadece bir aktivite için, context menü ise tıklanma işleminin uygulandığı her kontrol için geçerlidir.

Context menü oluşturabilmemiz için bir view nesnesine sahip olmalıyız. örneğin bir isim listesi oluşturalım
her isim üzerinde basılı tutulunca context menümüzde sil düzenle menüleri açılsın

Şimdi yeni proje oluşturalım adı Context Menü olsun. ilk başta layout tanımlarını yapalım
layoutumuz içerisine isim listemizin gösterilmesini sağlacayacak nesne olan bir listView ekleyeceğiz

 

context_menu1.xml layout dosyamız

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">    
    <ListView
        android:id="@+id/myList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="80dp"/>     
</RelativeLayout>

bir listView nesnesi tanımladık

Contextmenu1Activity.java

package com.ademaktas;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ContextMenu1Activity extends Activity {
    1 String names[]={"Mehmet","Ahmet","Remzi","Hakan","Selim"};    
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.context_menu1);
        2 ListView myList=(ListView)findViewById(R.id.myList);
        3 ArrayAdapter<String>adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names);
        4 myList.setAdapter(adapter);  
        5 registerForContextMenu(myList);  
    }
    @Override
    public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){
        super.onCreateContextMenu(menu,v,menuInfo);
        menu.setHeaderTitle("Lütfen seçiminizi yapınız");
        menu.add(0,v.getId(),0,"Düzelt");
        menu.add(0,v.getId(),0,"Sil");
    }
}

1 names dizilerimizi tanımladık. Dizilerimizi bir xml dosyasından nasıl aldığımızıda ileride anlatacağım.
2 ListView nesnemizi tanımladık
3 ListView elemanlarımızın kontrolü için bir ArrayAdapter tanımladık
4 Listemizin verilerini tanımladık
5 Context menu işlemini burada tanımladık

Gelelim Context menunun oluşturulduğu methoda

public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){
        super.onCreateContextMenu(menu,v,menuInfo);
        1 menu.setHeaderTitle("Lütfen seçiminizi yapınız");
        2 menu.add(0,v.getId(),0,"Düzelt");
        3 menu.add(0,v.getId(),0,"Sil");
    }

1 Context menümüz için bir başlık tanımladık
2 Düzelt menümüzü atadık
3 Sil menümüzü atadık
programı çalıştırdığınızda ListView nesnemizde names dizilerinin konumlandığını, isimlerden herhangi birine uzun süreli bastılı tuttuğunuzda context menünün çalıştığını göreceksiniz.

şimdi bir örnek daha yapalım. Sarı, Mavi,Yeşil, Kırmızı isimlerinden oluşan bir ListView elemanımız olsun ve context menumuz iki elemanı olsun  Dizi 1, İsim göster. context menu tıklandığında ekrana Toast ile tıklanan item için mesaj verdirelim

ilk başta bir layout dosyası oluşturup ListView nesnemizi tanımlayalım.
 Android uygulama elemanlarının özelliklerine daha fazla hakim olabilmek için, bu örnekleri tek tek yazarak uygulamanızı tavsiye ederim.
 context_menu2.xml
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">
<ListView
 android:id="@+id/myList"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_alignParentLeft="true"
 android:layout_alignParentTop="true"
 android:layout_marginLeft="50dp"
 android:layout_marginTop="80dp"/>
 </RelativeLayout>

ListView Nesnemiz için layout oluşturduk.
Activity Dosyası

package com.ademaktas;
import android.app.Activity;
 import android.os.Bundle;
 import android.view.ContextMenu;
 import android.view.ContextMenu.ContextMenuInfo;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.AdapterView.AdapterContextMenuInfo;
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
 import android.widget.Toast;
public class ContextMenu2Activity extends Activity {
String names[]={"Sarı","Mavi","Yeşil","Kırmızı"};
 @Override
 protected void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
 setContentView(R.layout.context_menu2);
 ListView myList=(ListView)findViewById(R.id.myList);
 ArrayAdapter<String>adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names);
 myList.setAdapter(adapter);
 registerForContextMenu(myList);
 }
 @Override
 public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo){
 menu.setHeaderTitle("Bir seçim yapınız");
 menu.add(0,v.getId(),0,"Dizi Bir");
 menu.add(0,v.getId(),0,"İsim Göster");
 }
 @Override
 public boolean onContextItemSelected(MenuItem item){
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
 if(item.getTitle()=="İsim Göster"){
 Toast.makeText(getApplicationContext(),"İsim Göster"+names[(int)info.id],Toast.LENGTH_LONG).show();
 }
 else if(item.getTitle()=="Dizi 1"){
 Toast.makeText(getApplicationContext(),"Dizi 1",Toast.LENGTH_LONG).show();
}
 else {
 return false;
 }
 return true;
 }
 }

bu kadar

AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
burada ContextMenu aracılığı ile seçilen ListView elemanına ulaştık.
bu kod ile birlikte import android.widget.AdapterView.AdapterContextMenuInfo; kütüphanesinin yüklendiğini göreceksiniz.
Son hali

android-context-menu-2-1android-context-menu-2-2android-context-menu-2-3

 

şimdi kod blogu içerisinde tanımladığımız context menu item tanımlarını xml dosyasında tanımlayalım

 

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*


bir + 4 =

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>