Toolbar a Arama Özelliği Eklemek

Android telefonlarda sayfanın üst kısmında bulunan ve üzerinde çeşitli araçları tutmaya yarayan toolbar (araç çubuğu), eğer istersek varsayılan hali kaldırılarak özelleştirilebilmektedir. Bu yazıda, toolbar görsel nesnesine arama özelliğinin nasıl eklenebileceğinden bahsedilecektir.

1- Android Studio 4.0 üzerinde androidx kütüphanesi kullanılarak oluşturulacak örnek için projeyi oluşturalım:

2- res / values / dizini altındaki styles.xml dosyasına şu kodu ekleyerek varsayılan olarak sunulan toolbar ı kaldıralım:

<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>

3- res / layout dizini altındaki activity_main.xml dosyası üzerinde varsayılan olarak gelen textview nesnesini kaldıralım ve tasarım arayüzünü kullanarak toolbar görsel nesnesini ekleyelim. (Palet kısmında görünmüyorsa arama yaptırılarak erişim sağlanabilir)

toolbar nesnesi için id oluşturalım, yatay ve dikey bağlantılarını sağlayalım ve toolbar ın ekrana tam oturabilmesi için layout_width özelliğinin match_parent olduğundan emin olalım.

4- java dizini altındaki MainActivity.java sınıfı içinde, toolbar görsel nesnesini activity_layout.xml dosyasına bağlamak için ilgili değişkeni tanımlarken androidx kütüphanesini import ettiğimizden emin olalım.

private Toolbar toolbar;

5- onCreate metodu içerisinde toolbar bağlama işlemini ve kendi toolbar nesnemizin görüntülenmesi için ilgili kodu yazalım.

toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar);

6- res dizini üzerinde sağ tuş + New > Android Resource Directory yolunu izleyerek menu dizini oluşturalım.

7- menu dizini üzerinde sağ tuş + New > Android Resource File yolunu izleyerek toolbar için layout dosyasını oluşturalım.

8- Oluşturulan layout dosyasına tasarım arayüzünü kullanarak Palet kısmından Menu Item ekleyelim, id verelim, icon belirleyelim, title girelim ve showAsAction için always ve collapseActionView özelliklerini tanımlayalım.

9 – Aynı layout üzerinde Code kısmına geçerek şu komutu ekleyelim:

app:actionViewClass="androidx.appcompat.widget.SearchView"

10- MainActivity.java sınıfına gelerek SearchView.OnQueryTextListener implement edelim. İlgili metodların da implement edilmesi için uyarı verecektir. Uyarı ampulüne tıklayarak ekleyelim.

11- Toolbar için oluşturduğumuz layout dosyasını MainActivity.java sınıfı içerisinde bağlamak için onCreate metodu kapsamı dışında onCreateOptionsMenu metodu oluşturalım ve içerisine şu kodları yazalım.

//menu klasöründe oluşturduğumuz tasarımı bağladık
getMenuInflater().inflate(R.menu.toolbar_design, menu);

//Tasarımın içindeki search ile ilgili item ı bağladık
MenuItem menuItem = menu.findItem(R.id.action_search);
//MenuItem için hata gelirse Alt+Enter ile ilgili class ı import edelim. 

SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setOnQueryTextListener(this );
//SearchView.OnQueryTextListener  implement edilmezse this hata verecektir...

12 – implement sonrası eklenen metodlardan onQueryTextSubmit metodu, araması istenilen ifade girilip ara denildikten sonra arama yapılması içindir. onQueryTextChange metodu ise araması istenilen ifade için her bir harf girilirken arama yapılması içindir. Log kayıtlarında bunu görerek test edebilmek için şu komutları kullanabiliriz.

Log.e(" Ara denilince arama:", query);
return true;
Log.e("Harf harf arama:" , newText);
return true;

Run > Run ‘app’ yolunu takip ederek projeyi çalıştırabilirsiniz…