Android’in iPhone’dan farklı olarak menü tuşuna sahip olması ve bu menü tuşunun işlevini uygulamamız için özelleştirebiliyor olmamız bayağı faydalı bir şey. Yine bir önceki yazımda olduğu gibi projem üzerinde çalışırken kullanmak zorunda kaldığım options menü ve alt menülerden bahsedeceğim.
Peki nedir bu options menü?

Şu yukardaki görselde de görüldüğü üzere cihazın “menu” tuşuna basıldığında aşağıdan açılan menüdür. Seçenek sayısı 6 taneye kadarsa hepsi orda görünür, 6′dan fazla ise 6. seçenek “more” olur ve diğer seçenekleri onu kullanarak görebiliriz. Ayrıca burda görünen menülerin de altında menüler olabilir. Bunlar da submenülerdir. Xml dosyasında tanımlayarak yapmak daha yaygın olsa da ben daha az tercih edilen yöntemle yapacağım. Bunun için eleştiriye açığım tabi.
Öncelikle menünün olmasını istediğimiz Activity’nin onCreateOptionsMenu() metodunu override etmemiz gerekiyor. İçerisine de menü elemanlarını eklememiz lazım. Bunların da alt menülerinin olabileceğini görelim.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu mMenu = menu.addSubMenu("Seçenek 0");
mMenu.add(1, 11, 0, "Alt seçenek 1");
mMenu.add(1, 12, 0, "Alt seçenek 2");
mMenu.add(1, 13, 0, "Alt seçenek 3");
mMenu.add(1, 14, 0, "Alt seçenek 4");
menu.add(0, 2, 0, "Seçenek 1");
menu.add(0, 3, 0, "Seçenek 2");
menu.add(0, 4, 0, "Seçenek 3");
menu.add(0, 5, 0, "Seçenek 4");
menu.add(0, 6, 0, "Seçenek 5");
return true;
}
Activity içine yukardaki kodu eklediğimizde onCreateOptionsMenu() metodunu override etmiş oluyoruz ve içine 1 container menü ile 5 tane de seçenek eklemiş oluyoruz. Container menü diye bir terim yok belki de onu ben uydurdum ama işlev olarak benziyorlar çünkü ilk seçenek (Seçenek 0) 4 ayrı alt seçenek içeriyor. Menüye eleman eklerken 4 parametre kullandım. Bunları da aşağıdaki görsel özetliyor.

Uygulamayı bu haliyle çalıştırıp cihazın/emülatörün “menü” tuşuna bastıktan sonra aşağıdakine benzer bir görüntü elde etmemiz gerekir.

Sıfırıncı seçeneği seçtikten sonra da aşağıdaki gibi.

Menümüzü ve alt menüsünü görüntülemede sıkıntı yok. Şimdi bu seçeneklerden herhangi biri seçildiğinde Android’e ne yapması gerektiğini söyleyelim. Bunun için de onOptionsItemSelected() metodunu override etmemiz gerekecek. Aşağıdaki kod ile de bunu yapalım.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 11:
secenek11Tiklandi();
return true;
case 12:
secenek12Tiklandi();
return true;
case 13:
secenek13Tiklandi();
return true;
case 14:
secenek14Tiklandi();
return true;
case 2:
secenek2Tiklandi();
return true;
case 3:
secenek3Tiklandi();
return true;
case 4:
secenek4Tiklandi();
return true;
case 5:
secenek5Tiklandi();
return true;
case 6:
secenek6Tiklandi();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Bundan sonra da artık gidip aşağıdaki metodları oluşturmalı ve içeriğini ne yapılmasını istediğimiz şekilde doldurmalıyız:
- secenek11Tiklandi()
- secenek12Tiklandi()
- secenek13Tiklandi()
- secenek14Tiklandi()
- secenek2Tiklandi()
- secenek3Tiklandi()
- secenek4Tiklandi()
- secenek5Tiklandi()
- secenek6Tiklandi()
Son 10 yazı
- C# .Net :: Email Regex
- İETT Hakkında
- Android :: Ksoap2 Kullanarak Webservislere Erişme
- Look Out!
- Android :: Enable / Disable Wifi
- WordPress :: Tema’da “Anasayfa” Bağlantısının Olup/Olmaması
- Java :: XML Dosyası Oluşturma
- Java :: Email Regex
- Android :: ADB Connection Timeout Problemi
- Android :: AVD Başlatılamaması Problemi
Kategoriler
- algoritmalar (3)
- android (11)
- c (1)
- çalışmalar (4)
- cSharp (5)
- eleştiri (4)
- genel (11)
- java (16)
- linux (2)
- müzik (3)
- php (5)
- projeler (4)
- r-tree (1)
- satranç (4)
- seminer (2)
- windows phone (1)
- yazılım mühendisliği (1)
Arşivler
- Nisan 2012 (1)
- Mart 2012 (1)
- Şubat 2012 (1)
- Ocak 2012 (1)
- Aralık 2011 (2)
- Kasım 2011 (1)
- Ekim 2011 (1)
- Eylül 2011 (3)
- Temmuz 2011 (1)
- Haziran 2011 (1)
- Mayıs 2011 (1)
- Nisan 2011 (3)
- Mart 2011 (1)
- Aralık 2010 (1)
- Ekim 2010 (1)
- Eylül 2010 (2)
- Ağustos 2010 (1)
- Temmuz 2010 (1)
- Haziran 2010 (1)
- Mayıs 2010 (1)
- Nisan 2010 (1)
- Mart 2010 (2)
- Ocak 2010 (2)
- Aralık 2009 (1)
- Ekim 2009 (2)
- Eylül 2009 (1)
- Ağustos 2009 (1)
- Mayıs 2009 (1)
- Nisan 2009 (1)
- Mart 2009 (4)
- Şubat 2009 (5)
- Ocak 2009 (4)
- Aralık 2008 (1)