Android Exposed Dropdown Menü

Yağmur Erdoğan
2 min readMar 17, 2021

--

Türkçesi “açılır menü” olan Dropdown menüleri elbet görmüşsünüzdür. Android’ de Dropdown menü oluşturmak için daha önce Spinner kullanmıştım. Ancak burada Spinner yerine farklı ve bence daha kolay customize edilebilen bir yöntem olan Material Design Component’ lerden Exposed Dropdown ile yapacağız. Gelin bu yazımda adım adım bu menüyü oluşturalım.

🤖Öncelikle Dropdown Menu isminde Empty Activity’den oluşan bir proje oluşturun. Daha sonra main_activity.xml dosyasındaki default olarak gelen textView’ u kaldırın. Bu projede Fragment kullanacağım. Bu yüzden main_activity.xml dosyasına FrameLayout eklememiz gerekmektedir.

FragmentFirst.kt ve fragment_first.xml oluşturalım. fragment_first.xml içerisine “TextInputLayout” ekleyelim. Component Tree’den bakarsanız TextInputLayout içerisinde TextInputEditText bulunduğunu göreceksiniz. Biz bunun yerine autoCompleteTextView kullanacağız. Margin, genişlik ve yükseklik ayarlarını da ekledikten sonra dosyamız şu şekilde olacaktır.

Dikkat edilmesi gerekenler;

  • TextInputLayout içerisinde bulunan style için farklı farklı Dropdown Menü seçenekleri bulunmaktadır. Benimle aynı kullanıp daha sonra diğerlerini de deneyebilirsiniz.
  • Yazdığımız hint’ in nereye eklendiğini görmek için üstteki görsele dönebilirsiniz.
  • İkon için drawable dosyasına sağ tıklayıp New ile ilerledikten sonra Vector Asset seçiniz. Burada istediğiniz ikonu seçip yeniden adlandırabilir rengini ve boyutunu değiştirebilirsiniz. Ben boyutunu değiştirmedim ancak rengi siyah olarak ayarladım.
  • Eğer AutoCompleteTextView içerisinde inputType = “none” olmazsa kullanıcı text alanına yazı yazabilir. Ancak biz kullanıcının veri girmesini istemiyoruz, var olan verilerden birini seçmesini istiyoruz. Bu yüzden bu seçeneği none olarak göstermeyi unutmayın.

👾 Daha sonra strings.xml içerisinde bir string-array oluşturalım.

Bu string-array’ de yer alan her string bir item temsil etmektedir. Bu item’ların genel özelliklerini tanımlamak için dropdown_item.xml adında layout dosyası oluşturalım.

🦸‍♀️ View binding ile fragment_first.xml’ deki view’lara erişmek için öncelikle build.gradle(module) dosyasında viewBinding özelliğini true olarak göstermeliyiz.

FirstFragment.kt dosyasını ise şu şekilde düzenleyelim;

Burada değinmek istediğim önemli bir nokta var. onResume fonskiyonuna neden ihtiyaç duyduk hiç düşündünüz mü?

Eğer projemizde başka bir sayfa daha olsaydı ve o sayfaya gidip daha sonra dropdown menü bulunan sayfaya geri dönseydik veri kaybına uğrayabilir ve item’ ları kaybedebilirdik. İşte bu sorunu ortadan kaldırmak için bu item ile ilgili tanımlamaları onResume fonksiyonu içerisinde yaptık. Daha ayrıntılı bilgi için Activity Lifecycle ve Fragment Lifecycle konularını araştırabilirsiniz.

🐲 Son olarak MainActivity.kt üzerinde aşağıdaki işlemi gerçekleştirelim ve fragment’ ın görünmesini sağlayalım.

Artık uygulamayı çalıştırabiliriz 🥳

📍 Kaynakça 📒📗📕

Projenin kaynak koduna buradan ulaşabilirsiniz 🧙‍♀️

--

--