Takip et

Android ActionBar Örneği ve Detaylı Anlatımı

Android ActionBar Örneği ve Detaylı Anlatımı Android uygulamalarının kullanıcı arayüzünde (UI) merkezi bir rol oynayan ActionBar, kullanı

Android ActionBar Örneği ve Detaylı Anlatımı

Android uygulamalarının kullanıcı arayüzünde (UI) merkezi bir rol oynayan ActionBar, kullanıcıya bağlamsal bilgiler sunan, navigasyon sağlayan ve uygulama genelindeki önemli aksiyonlara hızlı erişim imkanı tanıyan kritik bir bileşendir. Zamanla evrim geçirerek Toolbar adını alan bu yapı, modern Android geliştiriciliğinin vazgeçilmez bir parçası haline gelmiştir. Bu makalede, ActionBar’ın tarihsel gelişimini, temel kullanımını, özelleştirme seçeneklerini ve ileri düzey özelliklerini adım adım, örneklerle açıklayacağız.

ActionBar ve Toolbar: Temeller ve Evrim

Android platformu ilk çıktığında, uygulamaların üst kısmında standart bir başlık çubuğu bulunuyordu. Ancak Android 3.0 Honeycomb ile birlikte, daha zengin ve etkileşimli bir deneyim sunmak amacıyla “ActionBar” tanıtıldı. ActionBar, uygulamanın kimliğini, mevcut ekranın başlığını, navigasyon kontrollerini (geri butonu, up butonu) ve kullanıcı tarafından gerçekleştirilebilecek önemli eylemleri (menü öğeleri) tek bir yerde toplayan bir araç çubuğuydu.

ActionBar’ın Temel İşlevleri

* Uygulama Kimliği: Uygulama ikonu ve başlığı ile kullanıcının hangi uygulamada olduğunu gösterir.
* Navigasyon: Geri butonu veya “up” butonu ile hiyerarşik navigasyon sağlar.
* Aksiyon Öğeleri: Kullanıcının sıkça kullandığı veya o anki bağlama uygun eylemleri (örneğin, kaydet, paylaş, ara) ikon veya metin olarak gösterir.
* Aksiyon Taşması (Action Overflow): Daha az önemli veya daha az yer kaplaması gereken eylemleri üç nokta menüsü altında toplar.
* Navigasyon Modları: Sekmeler (tabs) veya açılır liste (spinner) gibi farklı navigasyon modlarını desteklerdi.

ActionBar, geliştiricilere uygulama barını programatik olarak kontrol etme yeteneği sunarak, tutarlı bir kullanıcı deneyimi oluşturmalarına yardımcı oldu. Ancak, zamanla Android’in tasarım felsefesi Material Design’a doğru evrildikçe, ActionBar’ın bazı kısıtlamaları ortaya çıktı. Özellikle esneklik ve özelleştirme konularında eksiklikleri vardı. ActionBar, genellikle Activity’ye bağlı ve sistem tarafından yönetilen bir yapıydı; bu da tasarım ve konumlandırma üzerinde tam kontrol sağlamayı zorlaştırıyordu.

Toolbar’a Geçişin Nedenleri ve Avantajları

Android 5.0 Lollipop ile birlikte Material Design’ın tanıtılmasıyla, geliştiricilere daha fazla esneklik ve kontrol sunan android.support.v7.widget.Toolbar (şimdiki adıyla androidx.appcompat.widget.Toolbar) bileşeni kullanıma sunuldu. Toolbar, aslında bir ViewGroup‘tur, yani herhangi bir View gibi layout dosyalarına eklenebilir ve diğer View‘lar gibi konumlandırılıp özelleştirilebilir.

Toolbar’ın ActionBar’a göre başlıca avantajları şunlardır:

* Esneklik: Bir View olduğu için, ekranın herhangi bir yerine yerleştirilebilir, boyutlandırılabilir ve farklı stillerle özelleştirilebilir. Birden fazla Toolbar aynı ekranda kullanılabilir (çok nadir durumlar için).
* Tasarım Özgürlüğü: Material Design prensiplerine tam uyum sağlar. Arka plan rengi, metin renkleri, ikonlar, yükseklik gibi birçok özelliği kolayca değiştirilebilir.
* Geriye Dönük Uyumluluk: AppCompat kütüphanesi sayesinde, eski Android sürümlerinde bile Material Design görünümlü bir araç çubuğu deneyimi sunar.
* Entegrasyon: CoordinatorLayout ve AppBarLayout gibi bileşenlerle kolayca entegre olarak, scroll ile gizlenme, kaydırılabilen sekmeler gibi gelişmiş UI etkileşimleri oluşturulabilir.

Bu nedenlerden dolayı, günümüzde yeni Android projelerinde Toolbar kullanılması şiddetle tavsiye edilmektedir. ActionBar terimi hala genel bir kavram olarak kullanılsa da, teknik olarak Toolbar bileşenini kastediyoruz ve bu makale de Toolbar üzerine odaklanacaktır.

Toolbar Kullanımına Giriş: Adım Adım Kurulum

Bir Android projesinde Toolbar kullanmaya başlamak oldukça basittir. İşte temel adımlar:

1. Proje Oluşturma ve Bağımlılıkları Kontrol Etme

Yeni bir Android Studio projesi başlatırken “Empty Activity” şablonunu seçmek iyi bir başlangıçtır. Toolbar genellikle androidx.appcompat kütüphanesinin bir parçasıdır. build.gradle (Module: app) dosyanızda aşağıdaki veya benzeri bağımlılığın bulunduğundan emin olun:

dependencies {
    // ... diğer bağımlılıklar
    implementation 'androidx.appcompat:appcompat:1.6.1' // Güncel sürümü kullanın
    // ...
}

Bu kütüphane, Toolbar dahil olmak üzere Material Design bileşenlerini ve geriye dönük uyumluluk özelliklerini sağlar.

2. Varsayılan ActionBar’ı Kaldırma

Toolbar‘ı kullanmak istediğimizde, sistemin varsayılan ActionBar‘ının devre dışı bırakılması gerekir. Bunu, uygulamanın temasını NoActionBar temalarından birini kullanarak yaparız. res/values/themes.xml (veya styles.xml) dosyasını açın ve uygulamanızın temel temasını aşağıdaki gibi ayarlayın:



    
    

Burada Theme.AppCompat.Light.NoActionBar temasını kullanarak, sistemin kendi ActionBar‘ını göstermesini engellemiş oluyoruz. Eğer uygulamanızda dark mode desteği varsa, res/values-night/themes.xml dosyasında da benzer bir değişiklik yapmanız gerekebilir.

3. Layout Dosyasına Toolbar Ekleme

Şimdi Toolbar‘ı, Activity’nizin layout dosyasına (örneğin activity_main.xml) ekleyebiliriz. Genellikle ConstraintLayout veya LinearLayout gibi bir ana layout’un en üstüne yerleştirilir.





    

    

Yukarıdaki örnekte dikkat etmeniz gereken bazı önemli özellikler:

* android:id="@+id/toolbar": Toolbar’a kod tarafında erişmek için bir ID tanımlar.
* android:layout_height="?attr/actionBarSize": Toolbar’ın yüksekliğini standart ActionBar yüksekliğine ayarlar. Bu, cihazlar arasında tutarlı bir görünüm sağlar.
* android:background="?attr/colorPrimary": Toolbar’ın arka plan rengini uygulamanın ana renk paletinden alır.
* android:elevation="4dp": Toolbar’a gölge efekti ekleyerek Material Design derinlik hiyerarşisini sağlar.
* android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar": Toolbar içindeki öğelerin (başlık, menü ikonları vb.) renklerini ayarlar. Dark.ActionBar teması, arka plan koyu olduğunda metin ve ikonların açık renkli olmasını sağlar.
* app:popupTheme="@style/ThemeOverlay.AppCompat.Light": Açılır menülerin (örneğin, aksiyon taşması menüsü) stilini belirler. Genellikle arka plan açık renkli olan bir tema kullanılır.

4. Activity Sınıfında Toolbar’ı Ayarlama

Son adım olarak, Activity sınıfınızda (örneğin MainActivity.java veya MainActivity.kt) Toolbar‘ı “support ActionBar” olarak ayarlamanız gerekir. Bu, Toolbar‘ın sistem ActionBar‘ı gibi davranmasını ve menü şişirme, navigasyon olayları gibi özelliklerini kullanabilmenizi sağlar.

// MainActivity.java
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar; // Toolbar sınıfını import etmeyi unutmayın

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar); // Toolbar'ı ActionBar olarak ayarla

        // Başlık ve alt başlık ayarlama (isteğe bağlı)
        getSupportActionBar().setTitle("Uygulama Başlığı");
        getSupportActionBar().setSubtitle("Alt Başlık");
    }

    // Menü öğelerini şişirmek için
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu); // menu_main.xml dosyasını şişir
        return true;
    }

    // Menü öğelerine tıklama olaylarını işlemek için
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            Toast.makeText(this, "Ayarlar seçildi!", Toast.LENGTH_SHORT).show();
            return true;
        }
        if (id == R.id.action_search) {
            Toast.makeText(this, "Arama seçildi!", Toast.LENGTH_SHORT).show();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

Kotlin kullananlar için:

// MainActivity.kt
package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val toolbar: Toolbar = findViewById(R.id.toolbar)
        setSupportActionBar(toolbar)

        supportActionBar?.apply {
            title = "Uygulama Başlığı"
            subtitle = "Alt Başlık"
        }
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.action_settings -> {
                Toast.makeText(this, "Ayarlar seçildi!", Toast.LENGTH_SHORT).show()
                true
            }
            R.id.action_search -> {
                Toast.makeText(this, "Arama seçildi!", Toast.LENGTH_SHORT).show()
                true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }
}

Bu adımlarla, uygulamanızda temel bir Toolbar kurulumunu tamamlamış olursunuz. setSupportActionBar(toolbar) çağrısı, Activity’nin getSupportActionBar() metodunu kullanarak Toolbar‘a erişmenizi ve onun üzerinde ActionBar benzeri işlemleri yapmanızı sağlar.

Temel Özelliklerin Özelleştirilmesi

Toolbar‘ı setSupportActionBar() ile ayarladıktan sonra, getSupportActionBar() metodu aracılığıyla birçok özelliğini kontrol edebilirsiniz.

Başlık ve Alt Başlık Ayarlama

Yukarıdaki örnekte gösterildiği gibi, getSupportActionBar().setTitle("...") ve getSupportActionBar().setSubtitle("...") metotlarıyla Toolbar‘ın başlık ve alt başlığını kolayca ayarlayabilirsiniz. Bu başlıklar, Activity’nin manifest dosyasındaki android:label özelliğini geçersiz kılar.

Navigasyon İkonu Ekleme (Geri Butonu/Menü İkonu)

Çoğu uygulamada, Toolbar‘ın sol tarafında bir navigasyon ikonu bulunur. Bu, genellikle bir geri butonu (önceki ekrana dönmek için) veya bir hamburger menü ikonu (navigasyon çekmecesini açmak için) olabilir.

// MainActivity.java içinde onCreate metodunda
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Geri butonu/navigasyon ikonu göster
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu); // İsteğe bağlı: özel bir ikon ayarla

Kotlin için:

// MainActivity.kt içinde onCreate metodunda
supportActionBar?.apply {
    setDisplayHomeAsUpEnabled(true)
    setHomeAsUpIndicator(R.drawable.ic_menu) // ic_menu, drawable klasörünüzde olmalı
}

setDisplayHomeAsUpEnabled(true) çağrısı, Toolbar‘ın soluna bir ok ikonu ekler. Eğer setHomeAsUpIndicator() ile özel bir ikon (örneğin, bir hamburger menü ikonu) belirtmezseniz, varsayılan geri oku gösterilir.

İkon Tıklama Olaylarını Yakalama

Navigasyon ikonuna tıklama olayını yakalamak için onOptionsItemSelected metodunu kullanırız. Navigasyon ikonunun ID’si android.R.id.home‘dur.

// MainActivity.java içinde onOptionsItemSelected metodunda
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == android.R.id.home) {
        // Navigasyon ikonuna tıklandığında yapılacak işlemler
        Toast.makeText(this, "Navigasyon ikonuna tıklandı!", Toast.LENGTH_SHORT).show();
        // Örneğin, geri gitmek için:
        // onBackPressed();
        // Veya bir navigasyon çekmecesini açmak için:
        // drawerLayout.openDrawer(GravityCompat.START);
        return true;
    }
    // ... diğer menü öğeleri
    return super.onOptionsItemSelected(item);
}

Kotlin için:

// MainActivity.kt içinde onOptionsItemSelected metodunda
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return when (item.itemId) {
        android.R.id.home -> {
            Toast.makeText(this, "Navigasyon ikonuna tıklandı!", Toast.LENGTH_SHORT).show()
            true
        }
        // ... diğer menü öğeleri
        else -> super.onOptionsItemSelected(item)
    }
}

Bu sayede, kullanıcı navigasyon ikonuna tıkladığında istediğiniz eylemi gerçekleştirebilirsiniz.

Menü Öğeleri ve Aksiyonlar

Toolbar‘ın en güçlü özelliklerinden biri, kullanıcıya çeşitli aksiyonlar sunabilmesidir. Bu aksiyonlar, menü öğeleri aracılığıyla Toolbar üzerinde veya bir taşma menüsü altında gösterilir.

1. Menü XML Dosyası Oluşturma

res/menu dizini altında yeni bir XML dosyası oluşturun (örneğin, menu_main.xml). Bu dosya, Toolbar‘da gösterilecek menü öğelerini tanımlar.




    

    

    

    

Menü öğelerinin özellikleri:

* android:id: Menü öğesine benzersiz bir ID verir.
* android:icon: Menü öğesi için bir ikon belirler (yalnızca showAsAction ifRoom veya always olduğunda gösterilir).
* android:title: Menü öğesinin metin başlığıdır.
* app:showAsAction: Bu özellik, menü öğesinin Toolbar üzerinde nasıl davranacağını belirler:
* never: Öğeyi her zaman taşma menüsünde (üç nokta ikonu) gösterir.
* ifRoom: Yeterli yer varsa Toolbar üzerinde, yoksa taşma menüsünde gösterir.
* always: Mümkünse her zaman Toolbar üzerinde gösterir.
* withText: İkonun yanında metin başlığını da gösterir (nadiren kullanılır).

2. Menüyü Şişirme (Inflate Etme)

Activity‘nizin onCreateOptionsMenu() metodunda, oluşturduğunuz menü XML dosyasını Toolbar‘a şişirmeniz gerekir.

// MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true; // Menünün gösterilmesi gerektiğini belirtir
}

Bu metod çağrıldığında, menu_main.xml dosyasındaki öğeler Toolbar‘a eklenir.

3. Menü Öğelerine Tıklama Olaylarını Yönetme

Kullanıcı bir menü öğesine tıkladığında, onOptionsItemSelected() metodu çağrılır. Bu metotta, tıklanan öğenin ID’sini kontrol ederek ilgili eylemi gerçekleştirebilirsiniz.

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

    if (id == R.id.action_search) {
        Toast.makeText(this, "Arama menüsü seçildi!", Toast.LENGTH_SHORT).show();
        return true;
    } else if (id == R.id.action_share) {
        Toast.makeText(this, "Paylaş menüsü seçildi!", Toast.LENGTH_SHORT).show();
        return true;
    } else if (id == R.id.action_settings) {
        Toast.makeText(this, "Ayarlar menüsü seçildi!", Toast.LENGTH_SHORT).show();
        return true;
    } else if (id == R.id.action_about) {
        Toast.makeText(this, "Hakkında menüsü seçildi!", Toast.LENGTH_SHORT).show();
        return true;
    }

    return super.onOptionsItemSelected(item); // Diğer olayları üst sınıfa bırak
}

Aksiyon Görünümleri (Action Views) ve Aksiyon Sağlayıcıları (Action Providers)

Bazı menü öğeleri sadece bir ikon veya metin olmakla kalmaz, aynı zamanda Toolbar içinde etkileşimli bir View de barındırabilir. Buna “Aksiyon Görünümü” denir. En yaygın örneklerden biri arama çubuğudur.

Bir arama çubuğu eklemek için:

1. Menü XML’inde actionViewClass veya actionLayout kullanın:

collapseActionView bayrağı, arama çubuğunun varsayılan olarak daraltılmış bir ikon olarak görünmesini ve tıklandığında genişlemesini sağlar.

2. onCreateOptionsMenu metodunda SearchView‘ı yapılandırın:

// MainActivity.java
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search_view);
        SearchView searchView = (SearchView) searchItem.getActionView();

        searchView.setQueryHint("Arama yapın...");
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                Toast.makeText(MainActivity.this, "Aranan: " + query, Toast.LENGTH_SHORT).show();
                searchView.clearFocus(); // Klavyeyi kapat
                searchItem.collapseActionView(); // Arama çubuğunu daralt
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                // Arama metni değiştikçe yapılacak işlemler
                return false;
            }
        });

        return true;
    }

Bu, Toolbar‘ınıza tam işlevsel bir arama çubuğu eklemenin temel yoludur. SearchView‘ın genişlemesi ve daralması gibi olayları da dinleyebilir ve buna göre UI’nızı güncelleyebilirsiniz.

Toolbar’ın Görsel Özelleştirmesi

Toolbar‘ın görünümünü uygulamanızın markasına veya genel tasarımına uyacak şekilde özelleştirmek oldukça kolaydır.

Renkler

* Arka Plan Rengi: android:background özelliği ile Toolbar‘ın arka plan rengini ayarlayabilirsiniz. Genellikle ?attr/colorPrimary kullanılır.
* Başlık ve Alt Başlık Metin Renkleri: Toolbar‘ın android:theme özelliği ile ayarlanır. ThemeOverlay.AppCompat.Dark.ActionBar teması, başlık ve menü ikonlarını açık renkte yapar (koyu arka plan için). ThemeOverlay.AppCompat.Light.ActionBar ise koyu renkli metin ve ikonlar kullanır (açık arka plan için).
* Açılır Menü Renkleri: app:popupTheme özelliği ile taşma menüsü ve diğer açılır menülerin temasını belirlersiniz. Genellikle ThemeOverlay.AppCompat.Light kullanılır.

Örnek:


    android:elevation="4dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:titleTextColor="#FFFFFF" 
    app:subtitleTextColor="#CCCCCC" 
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

app:titleTextColor ve app:subtitleTextColor ile başlık ve alt başlık metinlerinin renklerini doğrudan ayarlayabilirsiniz.

Yükseklik ve Boyutlandırma

Toolbar‘ın yüksekliği genellikle ?attr/actionBarSize olarak ayarlanır, bu da cihazlar arasında tutarlı bir yükseklik sağlar. Ancak, ihtiyaç duyarsanız özel bir dp değeri de verebilirsiniz: android:layout_height="64dp".

Fontlar ve Metin Stilleri

Başlık ve alt başlık için özel fontlar veya metin stilleri kullanmak isterseniz, Toolbar‘ın kendisinde veya temasında bu ayarları yapabilirsiniz.




Ve Toolbar tanımında bunları kullanın:

@font/my_custom_font kullanabilmek için font dosyanızı res/font dizinine eklemeniz ve Android 8.0 (API 26) ve üzeri için doğrudan fontları kullanmanız veya AppCompat‘ın font desteğini kullanmanız gerekir.

Gelişmiş Kullanım Senaryoları

Toolbar, basit bir araç çubuğundan çok daha fazlasını yapabilir. İşte bazı gelişmiş kullanım senaryoları:

Scroll ile Gizlenen Toolbar (CoordinatorLayout ve AppBarLayout)

Material Design’ın popüler etkileşimlerinden biri, kullanıcı aşağı kaydırdığında Toolbar‘ın ekranın dışına kaybolması ve yukarı kaydırdığında tekrar görünmesidir. Bu efekti elde etmek için CoordinatorLayout ve AppBarLayout kullanılır.




    

         

    

    

        
        

    

Burada AppBarLayout içindeki Toolbar‘a app:layout_scrollFlags="scroll|enterAlways" özelliği eklenir. NestedScrollView (veya RecyclerView gibi scroll edilebilir herhangi bir View) app:layout_behavior="@string/appbar_scrolling_view_behavior" ile AppBarLayout‘a bağlanır. Bu sayede, scroll olayları AppBarLayout tarafından dinlenir ve Toolbar‘ın kaydırılma davranışı tetiklenir.

Contextual Action Bar (CAB) – Bağlamsal Aksiyon Çubuğu

Kullanıcı bir listedeki öğelere uzun bastığında veya birden fazla öğe seçtiğinde, Toolbar‘ın yerini alarak seçime özel aksiyonlar sunan geçici bir araç çubuğuna “Contextual Action Bar” (CAB) denir.

CAB’ı başlatmak için startSupportActionMode() metodunu kullanırız ve bir ActionMode.Callback implementasyonu sağlarız:

// MainActivity.java
public class MainActivity extends AppCompatActivity {
    private ActionMode mActionMode;

    // ... onCreate, onCreateOptionsMenu, onOptionsItemSelected metotları ...

    // Bir öğeye uzun basıldığında çağrılacak örnek metod
    public void onItemLongClick(View view, int position) {
        if (mActionMode != null) {
            return;
        }

        // CAB'ı başlat
        mActionMode = startSupportActionMode(mActionModeCallback);
        view.setSelected(true); // Seçili öğeyi vurgula
        // CAB başlığını ayarla
        mActionMode.setTitle("1 öğe seçildi");
    }

    private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // CAB menüsünü şişir
            mode.getMenuInflater().inflate(R.menu.context_menu, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // CAB görünümünü güncelle (örneğin, seçili öğe sayısı değiştiğinde)
            return false; // Bir değişiklik yapılmadıysa false döndür
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            // CAB menü öğesine tıklandığında
            int id = item.getItemId();
            if (id == R.id.action_delete) {
                Toast.makeText(MainActivity.this, "Öğeler silindi!", Toast.LENGTH_SHORT).show();
                mode.finish(); // CAB'ı kapat
                return true;
            } else if (id == R.id.action_edit) {
                Toast.makeText(MainActivity.this, "Öğe düzenlendi!", Toast.LENGTH_SHORT).show();
                mode.finish();
                return true;
            }
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // CAB kapatıldığında
            mActionMode = null;
            // Seçili öğelerin vurgusunu kaldır
        }
    };
}

res/menu/context_menu.xml dosyası da CAB için özel menü öğelerini içerecektir.

Sekmeler (TabLayout ile Entegrasyon)

Toolbar‘ın altına sekmeler eklemek için TabLayout bileşeni kullanılır. TabLayout da AppBarLayout içine yerleştirilerek Toolbar ile birlikte kaydırılabilen bir yapı oluşturulabilir.



    

    

Activity içinde TabLayout‘ı bir ViewPager2 ile bağlayarak sekmeler arası geçişi sağlayabilirsiniz.

Sık Karşılaşılan Sorunlar ve Çözümleri

Toolbar ile çalışırken bazı yaygın sorunlarla karşılaşılabilir:

* Toolbar görünmüyor veya varsayılan ActionBar hala duruyor:
* Çözüm: styles.xml dosyasında uygulamanızın temasının Theme.AppCompat.Light.NoActionBar (veya benzeri bir NoActionBar teması) olduğundan emin olun. Ayrıca, AndroidManifest.xml dosyasında application veya belirli bir activity için android:theme özelliğinin doğru temayı işaret ettiğini kontrol edin.
* Menü öğeleri gösterilmiyor:
* Çözüm: onCreateOptionsMenu() metodunun Activity‘nizde doğru şekilde override edildiğinden ve getMenuInflater().inflate(R.menu.your_menu, menu); çağrısının yapıldığından emin olun. Ayrıca, metodun return true; döndürdüğünü kontrol edin.
* NullPointerException getSupportActionBar() çağrısında:
* Çözüm: setSupportActionBar(toolbar); çağrısını onCreate() metodunda, toolbar referansı atanmadan önce yapmadığınızdan emin olun. toolbar = findViewById(R.id.toolbar); satırı setSupportActionBar()‘dan önce gelmelidir.
* Toolbar içindeki ikonlar/metinler görünmüyor veya yanlış renkte:
* Çözüm: Toolbar‘ın XML tanımındaki android:theme ve app:popupTheme özelliklerini kontrol edin. Genellikle koyu arka planlar için ThemeOverlay.AppCompat.Dark.ActionBar ve açık arka planlar için ThemeOverlay.AppCompat.Light kullanılır.
* Toolbar scroll ile gizlenmiyor:
* Çözüm: Toolbar‘ın bir AppBarLayout içinde olduğundan ve app:layout_scrollFlags="scroll|enterAlways" gibi doğru scroll bayraklarına sahip olduğundan emin olun. Ayrıca, AppBarLayout‘un bir CoordinatorLayout içinde olduğundan ve içerik View‘inizin (örneğin NestedScrollView veya RecyclerView) app:layout_behavior="@string/appbar_scrolling_view_behavior" özelliğine sahip olduğundan emin olun.

Sonuç

Android ActionBar (şimdiki adıyla Toolbar), modern Android uygulamaları için vazgeçilmez bir UI bileşenidir. Uygulama kimliğini, navigasyonu ve önemli aksiyonları tek bir yerde toplayarak tutarlı ve kullanıcı dostu bir deneyim sunar. Toolbar‘ın esnekliği ve Material Design ile tam uyumu sayesinde, geliştiriciler uygulamalarının üst kısmını istedikleri gibi özelleştirebilir ve zengin etkileşimler ekleyebilirler.

Bu makalede, Toolbar‘ın temel kurulumundan başlayarak başlık ve navigasyon ikonunu ayarlama, menü öğeleri ekleme, aksiyon görünümleri kullanma ve ileri düzey scroll etkileşimleri gibi birçok konuyu ele aldık. Kod örnekleri ve adım adım açıklamalarla, kendi Android uygulamalarınızda güçlü ve özelleştirilebilir Toolbar‘lar oluşturmak için sağlam bir temel edinmiş olmalısınız. Toolbar, uygulamanızın kullanıcı arayüzünün kalbidir; onu etkin bir şekilde kullanarak kullanıcılarınız için daha iyi bir deneyim sağlayabilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık