Hot Posts

6/recent/ticker-posts

Android Action Bar Button Eklemek Kullanmak



Android'de Action Bar dediğimiz uygulamamızın hemen üstünde yer alan genellikle uygulama adının ve ekstra bir kaç butonun yer aldığı yerdir. Peki Action Bar'da nasıl çalışabiliriz?



Action Bar'ı doğru metodlar kullanarak bir arama kutusu ListView görüntüleyicisi, NavigationDrawer açıp - kapatma işlemi yapan bir Bar ve daha fazlası olarak set edebiliriz.


Mesela ben yukarıdaki resimde de görüldüğü gibi Action Bar'da bir Search ve Refresh Butonu eklemişim . Peki tüm bu işlemleri basitçe nasıl yapabiliriz? 
Vakit kaybetmeden başlayalım;



Öncelikle uygulamamızın yer aldığı proje hiyerarşisinden res/menu yoluna gelip sağ tıklayıp New> Menu Resource File seçeneğini seçip projemize herhangi bir isim verip ilgili xml dosyasını kaydedelim.

Daha sonra xml dosyasında, bir <item></item> tagı içerisine kendi itemimizi ekliyoruz. Ben bir SearchView aktif eden itemimi şu şekilde ekledim:


<?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/action_search_insides"
        android:enabled="true"
        android:icon="@drawable/ic_search"
        android:orderInCategory="300"
        android:title="@android:string/search_go"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom" />

</menu>

Daha sonra uygulamamızın çağrılacağı class'a gelip kendi onCreateOptionsMenu metodunu Override etmemiz gerekiyor.
Buranın içinde bir inflater tanımlayıp yukarıdaki gibi tanımlaığımız menu xml dosyamızı bu inflater'in içinde inflate ediyoruz. Aşağıda detaylı şekilde görebilirsiniz.



    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater =getMenuInflater();
        inflater.inflate(R.menu.insides_search,menu);
        return super.onCreateOptionsMenu(menu);
    }

Ve son olarak eklenilen itemleri kullanmak için onOptionsItemSelected metodu Override edilir. Bu Override'in altına genellikle ya if veya switch kontrol mekanizmaları yazılır ve aksiyonlar girilir. Switch tanımlamak genellikle daha sade, anlaşılır ve kolay oluyor. item.getItemId() metodu bize ilgili itemin id'sini verir. Ben xml dosyası içerisinde item'imin id'sini action_search_insides olarak set etmiştim.  O yüzden çağırırken case içerisinde R.id.action_search_insides ile çağırıyorum ve hemen altına yapmak istediğim şeyleri yazıyorum. Başka itemlerimiz varsa bunları da farklı case'ler içinde id'leri ile çağırabiliriz. en sonunda default: altına da super classından ilgili override metodunun türetilmiş yöntemini çağırıyoruz:



 @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case R.id.action_search_insides:
                setTitle("");
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }

Soru, sorun ve önerileriniz için yorum bırakabilirsiniz.

Post a Comment

0 Comments