#13 – Menü Oluşturma


Menüler birçok uygulama tipinde kullanılan ve kullanıcıya ayar ya da seçimler yapma olanağı veren bileşendir. Hemen hemen her uygulamada geliştirici hakkında bilgi içeren hakkında sekmesi de menülere eklenir. Bazı uygulamalarda da geliştirici diğer uygulamalarını tanıtmak için uygulamalar diye bir sekme ekler menülere. Bu yüzden android uygulamaları için menülerin önemi çok büyüktür. Bu yazımda android menüleri nasıl oluşturulur? sorusuna cevap vermeye çalıştım. Umarım yararı olur. Hadi başlayalım :)

Android te üç tip menü vardır, bunlar:

1. Options Menu
2. Context Menu
3. Popup Menu

Bu yazımda Options Menu hakkında konuşacağız, diğer tipleri ileriki yazılarımda anlatmayı planlıyorum.

İlk önce xml ile menüyü kodlamamız gerekiyor. Daha sonra  java ile uygulamamıza menü nesnesi olarak ekleyeceğiz.

XML ile Uygulamamızın Menüsünü Tanımlama

Androidte menü oluşturmak için standart bir xml formatı vardır. Biz de bu formatı kullanacağız.

/res/menu dosyasına yeni bir xml dosyası açıp ismine menu.xml diyelim. Daha sonra aşağıdaki kodları girin, açıklamaları kodların altında verdim:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- Single menu item 
		 Set id, icon and Title for each menu item
	-->
      <item android:id="@+id/paylas"
    	  android:icon="@drawable/icon_search"
          android:title="Paylaş" />

    <item android:id="@+id/takimsec"
    	  android:icon="@drawable/icon_bookmark"
          android:title="Takım Seç" />

    <item android:id="@+id/oyver"
    	  android:icon="@drawable/icon_share"
          android:title="Oy Ver" />
    <item android:id="@+id/uygulamalar"
    	  android:icon="@drawable/icon_share"
          android:title="Uygulamalar" />

    <item android:id="@+id/hakkinda"
    	  android:icon="@drawable/icon_save"
          android:title="Hakkında" />
</menu>

Not: Menüyü oluştururken isimleri ve simge resimlerini rastgele seçtim. Pek uygun simgeler değiller :)

Yukarıdaki kodlar ile alakalı kısa bir açıklama yapmak gerekirse: 

menu ile yeni menü oluşturuyoruz. item ile menüye yeni nesne ekliyoruz. id parametresinin nesnenin kimliği olarak kullanıldığını daha önceki yazılarımda söylemiştim. icon parametresi menü nesnesinin simgesini belirlememizi sağlıyor. Simge resimlerini drawable dosyası altına kaydediyoruz. title parametresi nesnenin başlığını belirlememizi sağlıyor.

Bu adımdan sonra yapmamız gereken şey oluşturduğumuz menüyü javayı kullanarak uygulamamıza eklemek. Bunun için aşağıdaki adımları takip edin.

main.java dosyamızı açıyoruz. Burada otomatik olarak üretilmiş onCreateOptionsMenu metodunu göreceksiniz. Bu metodun altındaki kodları aşağıda verdiğim şekilde değiştirmeniz işimizi görecektir.

  public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu, menu);
        return true;
    }

Gördüğünüz gibi menuInflater sınıfındaki inflate metodunu kullanarak menümüzü ekledik. Bunun için de parametre olarak şunu girdik: R.menu.menu . Çünkü biz menü oluşturmak için yazdığımız kodu menu dosyası altında menu.xml diye kaydetmiştik.

Uygulama Örneğimizi Test Edelim:

Android te Menü Oluşturma adlı yazımızın sonuna geldik, bütün android evreni ziyaretçilerine yararlı olmasını umarım.

Bir önceki Android Programlama 12- Uyarı Diyalogları(Alert Dialogs) adlı yazımda android teki uyarı diyalogları uygulama örneği ile desteklenerek anlatılmıştır.

Kolay gelsin :)

Şunlar da ilginizi çekebilir

10 yorum

  • dacotaen
    6 Ekim 2013 at 05:06

    la rГ©ponse Excellente, est gaillard :)

  • Atil
    20 Kasım 2013 at 18:33

    Hocam dersler neden bitti ?

    • Admin
      21 Kasım 2013 at 07:13

      merhaba dersler bitmedi, Elektrik-Elektronik Mühendisliği 4. sınıf öğrencisiyim bu yüzden şu an çok yoğunum. Biraz ara verdim derslere. Ama yakında detaylı,açıklamalı, örnekli ve uygulamalı derslerim devam edecek.

      • kadir
        30 Kasım 2013 at 17:14

        Beklemedeyizzz…

  • kadir
    30 Kasım 2013 at 17:14

    Hocam lütfen derslere devam edin sizin kadar güzel anlatıp kodları verip yazılı olarak detaylı anlatan başka çk az kişi var lütfen devam edin devamını bekliyoruz, takipteyiz..

  • Uğur
    1 Şubat 2014 at 13:29

    Adamsın be ADAM! Tamda böyle dersler arıyordum. Bulduklarımın yarım veya eksik oluyordu anlatım dediğin böyle olur : )

    • Mustafa Demir
      1 Şubat 2014 at 14:41

      Teşekkürler Uğur bey, zaman ayırabilirsem dersler devam edecek ve hep ayrıntılı, eksiksiz yani ‘adam’ gibi anlatılıcak :).

      • Uğur
        14 Şubat 2014 at 22:20

        Takipteyim 😉

  • mali sahin
    6 Eylül 2014 at 21:26

    hocam cok guzel anlatmışşınız ben hakkımda bolumune basında ekrana pop-up açıp ad vesoyad tarzı syler yazmasını istıyorum elimde popup ornegı var ama bunu optıon menudekı hakkımda tusuna atamayı yapamıyorum

    • mali sahin
      6 Eylül 2014 at 21:27

      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
      // TODO Auto-generated method stub
      MenuInflater menuInflater = getMenuInflater();
      menuInflater.inflate(R.menu.menum, menu);
      return super.onCreateOptionsMenu(menu);
      }
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
      // TODO Auto-generated method stub
      switch (item.getItemId())
      {
      case R.id.item1:
      Toast.makeText(this, “Hakkımızda seçildi”, 5000).show();
      return true;

      case R.id.item2:
      System.exit(3000);
      return true;
      default:
      return super.onOptionsItemSelected(item);
      }

      }

      }

      BURADAKİ case R.id.item1: BÖLÜMÜNE BU KODU EKLEYEMEDİM YARDIMCI OLUNUZ LUTFEN

      final Button btnOpenPopup = (Button)findViewById(R.id.openpopup);
      btnOpenPopup.setOnClickListener(new Button.OnClickListener(){

      @Override
      public void onClick(View arg0) {
      LayoutInflater layoutInflater
      = (LayoutInflater)getBaseContext()
      .getSystemService(LAYOUT_INFLATER_SERVICE);
      View popupView = layoutInflater.inflate(R.layout.popup, null);
      final PopupWindow popupWindow = new PopupWindow(
      popupView,
      LayoutParams.WRAP_CONTENT,
      LayoutParams.WRAP_CONTENT);

      Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
      btnDismiss.setOnClickListener(new Button.OnClickListener(){

      @Override
      public void onClick(View v) {
      // TODO Auto-generated method stub
      popupWindow.dismiss();
      }});

      popupWindow.showAsDropDown(btnOpenPopup, 50, -30);

      }});
      }
      }

Uğur için bir cevap yazın Cevabı iptal et