Harun Özer


Proje veya dijital katalog yaptırmak için
iletişim formu doldurabilirsiniz..

<< Android arayüz geliştirme | Javascript excel oluşturma ve indirme>>

Android Menü Oluşturma

Yazar harunozer 11 January 2015

Android Menü Oluşturma Android de farklı menü yapıları bulunur. Biz bu makalede “Options Menu” (Menü düğmesine basılınca çıkan) ve “Context Menu” (View elemanlarında parmağımızı basılı tuttuğumuzda çıkan) yapılarını inceleyeceğiz.

Options Menu

Options Menu, menü butonuna bastığımızda ekranda görünen menü yapısıdır.  Options menu activitylerle ilişkilidir. Her bir activity en fazla 1 Options Menu ye sahip olabilir. Activitynin java sınıfında “onCreateOptionsMenu” metodu override edilerek menü oluşturulur. Menü elemanları alt menü olarak da eklenebilir. Aşağıdaki gibi bir menü tasarlayalım ve “Daha Fazla” altına “Kilitle” elemanı ekleyelim.

Android Options Menü

private static final int ID_KAPAT = Menu.FIRST;

private static final int ID_AYARLAR = Menu.FIRST + 1;

private static final int ID_DAHA_FAZLA = Menu.FIRST + 2;

private static final int ID_KILITLE = Menu.FIRST + 3;

@Override

public boolean onCreateOptionsMenu(Menu menu) {

                super.onCreateOptionsMenu(menu);

                menu.add(Menu.NONE, ID_KAPAT, 0, "Kapat");

                menu.add(Menu.NONE, ID_AYARLAR, 0, "Ayarlar");

                SubMenu dahafazla = menu.addSubMenu(Menu.NONE, ID_DAHA_FAZLA, 0, "Daha Fazla");

                dahafazla.addSubMenu(Menu.NONE, ID_KILITLE, 0, "Kilitle");

                return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

                switch (item.getItemId()) {

                case ID_KAPAT:

                               Toast.makeText(MainActivity.this, "Geri Dön Tıklandı", Toast.LENGTH_LONG).show();

                               return true;

                case ID_AYARLAR:

                               Toast.makeText(MainActivity.this, "Güncelle Tıklandı", Toast.LENGTH_LONG).show();

                               return true;

                case ID_DAHA_FAZLA:

                               Toast.makeText(MainActivity.this, "Daha Fazla Tıklandı", Toast.LENGTH_LONG).show();

                               return true;

                case ID_KILITLE:

                               Toast.makeText(MainActivity.this, "Kilitle Tıklandı", Toast.LENGTH_LONG).show();

                               return true;

                default:

                               return super.onOptionsItemSelected(item);

                }

}

onCreateOptionsMenu metodunu override ettik. Bu metod parametre olarak Menu nesnesi alır. Menu nesnesinin add metodu ile menü elemanlarını ekliyoruz. add metodunun parametreleri sırası ile şöyledir;
grupID: Bazı menü elemanlarını gruplamak istersek bu parametreye bir değer verebiliriz. Örneğin kullanıcı giriş yapmamış ise kullanıcı ile ilgili menülerin görünmesini istemiyorsak, bu menü elemanlarına bir grup verebiliriz ve bu grupID üzerinden menüleri gizleyebiliriz.
ItemID: Her menü elemanı için benzersiz bir değer vermemiz gerekir. Menüde hangi elemanın seçildiğini bu değerler üzerinden buluruz.
order: Elemanın görünme sırasını berlirtir.
title: Menü elemanının yazısını belirtir.
“Daha Fazla” menü elemanını sub menü olarak ekliyoruz ve altına da Kilitle elemanını ekliyoruz. Herhangibir menü elemanı seçildiğinde “onOptionsItemSelected” metodu çalıştırılır ve parametre olarak “MenuItem“ nesnesi ile seçilen item gönderilir. Bu nesnenin getItemID() metodu ile seçili elemanın itemID değeri alınır ve istenilen işlemler yapılır. Biz örneğimizde ekrana toast ile mesaj yazdırıyoruz.

Context Menu

Android Context Menu view üzerinde parmağınızı basılı tuttuğunuzda açılan menüdür. Context menu view elemanları ile ilişikilidir. Context menu oluşturmak için view elemanlarının context menüye sahip oldukları “registerForContextMenu” metodu ile belirtilir ve Activity sınıfında “onCreateContextMenu” metodu override edilir. Bu metot içinde menü elemanları oluşturulur ve menu nesnesine eklenir. Menü elemanları imajlardan da oluşturulabilir. Menü elemanlarının eklenmesi OptionsMenu ile parametreler ile yapılabilir. 

Android Context Menü

Context Menü örneğimiz için Ad Soyad ve E-Posta için 2 EditText view ekleyelim.  Her iki edit text in Context Menüsünde Temizle elemanı olsun. Ayrıca Ad Soyad EditText inin Context Menüsünde Doğrula, E-Posta edit text in Context Menüsünde E-Posta Gönder elemanları da olsun. Örnek uygulamamızın Activity sınıfı aşağıdaki gibidir.

protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);

                setContentView(R.layout.activity_main);          

                EditText etADSoyad = (EditText)findViewById(R.id.edAdSoyad);

                EditText etEPosta = (EditText)findViewById(R.id.edEPosta);

                registerForContextMenu(etADSoyad);

                registerForContextMenu(etEPosta);

}

               

private static final int ID_TEMIZLE = Menu.FIRST;

private static final int ID_DOGRULA = Menu.FIRST + 1;

private static final int ID_MAILGONDER = Menu.FIRST + 2;

private static int ID_SELECTEDITEM;

               

@Override

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {

                super.onCreateContextMenu(menu, v, menuInfo);

                ID_SELECTEDITEM = v.getId();

                menu.add(Menu.NONE,ID_TEMIZLE,0,"Temizle");

                if(ID_SELECTEDITEM == R.id.edAdSoyad)

                               menu.add(Menu.NONE,ID_DOGRULA,1,"Doğrula");                   

                if(ID_SELECTEDITEM == R.id.edEPosta)

                               menu.add(Menu.NONE,ID_MAILGONDER,2,"Mail Gönder");

}

@Override

public boolean onContextItemSelected(MenuItem item) {

                EditText selectedItem = (EditText) findViewById(ID_SELECTEDITEM);

                if(item.getItemId() == ID_TEMIZLE) {

                               Toast.makeText(MainActivity.this, selectedItem.getText() + " için TEMİZLE tıklandı.", Toast.LENGTH_LONG).show();

                               return true;

                }

                else if(item.getItemId() == ID_DOGRULA) {

                               Toast.makeText(MainActivity.this, selectedItem.getText() + " için DOĞRULA tıklandı.", Toast.LENGTH_LONG).show();

                               return true;

                }

                else if(item.getItemId() == ID_MAILGONDER) {

                               Toast.makeText(MainActivity.this, selectedItem.getText() + " için MAİL GÖNDER tıklandı.", Toast.LENGTH_LONG).show();

                               return true;

                }

                return false;

}

Örneğimizin layoutunda “etAdSoyad” ve “etEPosta” EditText view lerini ekliyoruz. Activity sınıfımızda ilk olarak “onCreate” metodunda “etADSoyad” ve “etEPosta” view lerinin ContextMenu ye sahip olduklarını “registerForContextMenu” metodu ile bildiriyoruz. Uygulama çalışınca bu view lerde basılı tutulduğunda “onCreateContextMenu” metodu çalışır ve bu metoda gelen menu parametresi ile açılacak menü oluşturulur. Seçili olan View elemanının id değerini de gelen View v parametresinden okuyarak “ID_SELECTEDITEM “değişkenine atıyoruz. Seçili olan view nesnesine göre menüye “Doğrula” veya “Mail Gönder” elemanlarını da ekliyoruz. Burada ki parametreler OptionsMenu ye eleman eklerken verdiğimiz parametreler ile aynıdır. Menüden eleman seçildiğinde seçilen eleman “onContextItemSelected” metoduna parametre olarak gönderilir. Burada ilk olarak onCreateContextMenu metodunda sakladığımız view ID si ile seçili view nesnesinin text değerini alıyoruz ve seçilen item in ID değerine göre toast mesajı veriyoruz.

OptionsMenu ve ContextMenu örneklerini aşağıdaki linkden indirebilirsiniz.

optionsmenu.rar

contextmenu.rar

Tam Sayfa
Tags Android,
Kategoriler Android
İşlemler
Bu Makale 6  Kez Beğenildi.
İsim :    
e-Mail :    
Web Site :  
İmage :  
Güvenlik Kodu :  

Güvenlik Resmi
Resmi Yenile
    
Yorum :  
Tasarım Desenleri ve Mimarileri