"Enter"a basıp içeriğe geçin

Android Studio ActionBar Üzerine Menü ve Menü Ögeleri Ekleme

Menü eklemek için iki tane metodu override etmek gerekiyor. Bir tanesi menüyü oluşturacak, diğeri menü ögelerine tıklandığında yapılacak işlemleri belirleyecek. Menüyü oluşturacak metodun adı onCreateOptionsMenu. R.menu.menu_main: ileride oluşturulacak, menülerin adı ve simgesi gibi nitelikleri belirleyecek xml dosyası.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

Diğer metot ise, ögelere tıklandığında yapılacak görevler için oluşturuluyor. Parametre olarak seçilen seçeneği alıyor. item.getItemId ile seçilen seçeneğin id değerine ulaşıp switch-case yapısında görevlerini veriyoruz. ayarlar ve paylas kısımları oluşturulacak xml dosyasından geliyor.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    switch (id){
        case R.id.paylas:
            return true;

        case R.id.ayarlar:
            return true;
            
        case R.id.gonder:
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

xml dosyasını oluşturalım. Bunun için res klasörüne sağ tıklayıp new -> Android Resource Directory tıklayıp adını menu verin. menuya sağ tıklayıp new -> Menu resource file seçin ve adını menu_main koyun. Burada her <item etiketi ile yeni bir menü ögesi oluşturulabiliyor.

<item
    android:id="@+id/paylas"
    android:icon="@android:drawable/ic_menu_share"
    android:orderInCategory="1"
    android:title="Paylaş"
    app:showAsAction="always" />

<item
    android:id="@+id/ayarlar"
    android:icon="@android:drawable/ic_menu_preferences"
    android:orderInCategory="1"
    android:title="Ayarlar"
    app:showAsAction="never" />

<item
    android:id="@+id/gonder"
    android:icon="@android:drawable/ic_menu_send"
    android:orderInCategory="2"
    android:title="Gönder"
    app:showAsAction="ifRoom|withText" />

icon kısmında Android Studio’nun kendi iconlarından kullandık.

Title kısmı alt sekme veya üstüne basılı tutunca gözükecek yazıyı belirliyor.

OrderInCategory, menü ögelerinin ActionBar üzerinde hangi sırayla duracağını belirtiyor. 0 ilki olmak üzeri 1, 2, 3… diye devam eder.

ShowAsAction, menü ögelerinin ActionBarın üzerinde mi görüneceği yoksa alt menüde mi görüneceğini belirtiyor. Always, her zaman görüneceğini belirtiyor. Never sadece alt menüde görünecek. ifRoom, ActionBar üzerinde yer varsa görünecek. ifRoom|withText, yer varsa metin olarak gözüksün demek.

Kodların son durumu:

menu_main.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/paylas"
        android:icon="@android:drawable/ic_menu_share"
        android:orderInCategory="1"
        android:title="Paylaş"
        app:showAsAction="always" />

    <item
        android:id="@+id/ayarlar"
        android:icon="@android:drawable/ic_menu_preferences"
        android:orderInCategory="1"
        android:title="Ayarlar"
        app:showAsAction="never" />

    <item
        android:id="@+id/gonder"
        android:icon="@android:drawable/ic_menu_send"
        android:orderInCategory="2"
        android:title="Gönder"
        app:showAsAction="ifRoom|withText" />
</menu>

MainActivity.Java

package com.osmananilozcan.nasilyapilirornekleri;

//import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        switch (id){
            case R.id.paylas:
                return true;

            case R.id.ayarlar:
                return true;

            case R.id.gonder:
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

4 Yorum

  1. Yusuf MERMER
    Yusuf MERMER 28/03/2020

    Merhabalar. Menü bende normal kullanmak istediğim .xml dosyasında gözükmüyor. gözükmesi için sanki bir iki koda daha gerek var ya da neyi yanlış yapıyor olabilirim?

    • Osman Anıl Özcan
      Osman Anıl Özcan 29/03/2020

      Merhaba Yusuf,

      Anladığım kadarıyla Menu.xml dosyasını oluşturmadınız. Yazının içerisinde nasıl yapılacağı yazmaktadır.

      İyi günler.

  2. Tarık
    Tarık 20/06/2018

    Teşekkürler. Çok faydalandım.

    • Osman Anıl Özcan
      Osman Anıl Özcan 20/06/2018

      Teşekkürler.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.