Xamarin.Forms’da Picker’ın Cancel/Done Text’ini Değiştirme

Bu yazıda Xamarin.Forms projemizde kullandığımız picker kontrolünün Tamam/İptal butonunun text’ini nasıl değiştireceğimizi anlatacağım. Bu işlemi gerçekleştirebilmemiz için Custom Renderer tanımlamamız gerekiyor. Bu nedenle önce portable katmanında Picker sınıfından miras alan CustomPicker sınıfımızı oluşturalım.

Bu text’leri dinamik olarak değiştirebilmek için de DoneButtonText ve CancelButtonText isimli iki tane bindable property tanımladık. Şimdi her bir platform için renderer’larımızı yazalım.

iOS:

iOS’ta picker kontrolünün native karşığı UITextField‘dir. Cancel ve done buton’ları UIBarButtonItem olarak tanımlanıp, UIToolBar‘a ekleniyor ve UITextField’e ItemInputAccessoryView kullanılarak tanımlanıyor.

UIBarButtonSystemItem.FlexibleSpace

nesnesi ise toolbar’daki kontrollerin arasına yerleştirildiğinde aralarında eşit boşluk olması sağlıyor. Sadece bir tane eklenmiş ve yanında da bir kontrol varsa, kontrol kendi alanı kadar yer kaplarken kalan boşluğu bu nesne dolduruyor. Yani burada da done buton’undan önce eklendiği için onu en sağa itiyor. Bu nesneyi koymasaydık done butonu en sola dayanırdı.

Android:

Android’de renderer biraz daha farklı görünüyor çünkü Done/Cancel butonları ancak picker’a tıklandığında tanımlanıyor.

 var builder = new AlertDialog.Builder(Context);

koduna bakarsak picker’a tıklandığı an görüntülenecek olan AlertDialog tanımlanıyor. Bizim değiştireceğimiz buton’da bu nesnenin içinde yer alıyor ve bu nesne ile beraber tanımlanıyor. Bu yüzden değiştirme işlemini builder’ın tanımlandığı OnCLick() event’inde yapmamız gerekiyor. OnCLick() için de bir listener tanımlıyoruz ve

builder.SetPositiveButton

builder.SetNegativeButton

metodlarını kullanarak Cancel/Done butonlarının text’lerini ayarlıyoruz.

Forms:

Örnek projenin tamamını GitHub‘dan indirebilirsiniz.

Bir cevap yazın

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