Xamarin.Forms BoxView ve Frame (Çerçeve) – Bölüm 19

Xamarin

İki basit dikdörtgen görünümü genellikle sunum amaçları için kullanışlıdır, eğer üzerinde hakimiyetiniz çok iyi ise özelliklerini Button’dan da alabilirsiniz.

BoxView dolu bir dikdörtgendir. Varsayılan olarak saydam olan Color.Default ayarıyla View’den gelir ve bir Color özelliği tanımlar.

Frame, bazı içerikleri çevreleyen dikdörtgen bir kenarlık görüntüler. Frame, bir ContentView aracılığıyla Content özelliği inherit eden Layout’a aittir. Frame’in içeriği tek bir görünüm olabilir veya bir sürü görünüm içeren bir düzen olabilir. VisualElement’den Frame, iPhone’da beyaz olan ancak Android ve Windows Phone’de şeffaf olan bir BackgroundColor özelliğini inherit eder. Layout, Frame içeriğine biraz nefes aldıracak alan olmasını sağlamak için her tarafta 20 birim olan Padding özelliğini inherit eder.

Frame kendisi varsayılan olarak true olan HasShadow özelliğini ve varsayılan olarak şeffaf olan ancak her zaman siyah olan HasShadow true ayarlandığında (gölge yalnızca iOS cihazlarında görünür) daima görünür olan iOS gölgesini etkilemeyen bir OutlineColor özelliğini tanımlar.

Frame anahattı ve BoxView varsayılan olarak şeffaftır, bu nedenle farklı platformlar için farklı renklere başvurmadan bunları nasıl renklendirileceğinden biraz emin olamayabilirsiniz. Tek iyi bir seçim Color.Accent’tır; bu ne olursa olsun görünmeye garantildir. Veya, frame anahattı ve BoxView’in yanı sıra arka plan rengini kontrol etme hakkına da sahip olabilirsiniz.

BoxView veya Frame hiçbir şekilde kısıtlanmamışsa -bir StackLayout içinde değilse ve HorizontalOptions ve VerticalOptions, LayoutOptions.Fill varsayılan değerlerine ayarlanmışsa, bu view’ler sınırları dolduracak şekilde genişler.

Örneğin, bir Frame’in Content özelliğine ayarlanmış ortalanmış bir Label’a sahip bir program:

“Buraya bir not geçmek istiyorum! Şuana eğer ki Content’ler ile fazla uğraşmadıysanız; Evet! ContentPage’den Inherit edilen sınıfın Constructor metoduna birden fazla Content özelliği ekleyebilirken, görünümlerin ki kısıtlıdır!”

Label Frame’in merkezinde yer alır, ancak Frame tüm sayfayı doldurur ve sayfaya her yönde 20’lik bir Padding vermezseniz Frame’i açıkça göremeyebilirsiniz:

Merkezi (merkezde yer alan) çerçeveli metni görüntülemek için, LayoutOptions.Center için Frame’deki (Label yerine) HorizontalOptions ve VerticalOptions özelliklerini ayarlamak istiyorsunuz:

Şimdi Frame, ortasında metni kaplıyor (çerçevenin 20 birim varsayılan dolgusu ile):

Bu bölümün örnek koduyla birlikte gelen FramedText’in sürümü, her şeye özel bir renk verme özgürlüğünü uygular:

Sonuç üç platformda kabaca aynı görünüyor:

Böyle bir ContentPage’in Content özelliğine bir BoxView ayarlamayı deneyin:

Görmek için Color özelliğini ayarladığınızdan emin olun. Label, varsayılan HorizontalOptions veya VerticalOptions ayarlarıyla yaptığı gibi, BoxView, containerın tüm alanını doldurur:

Şimdi, bu kod örneğinde ki gibi Fill dışında bir şey için BoxView; HorizontalOptions ve VerticalOptions özelliklerini ayarlamayı deneyin:

Bu durumda, BoxView 40 birim karenin varsayılan boyutlarını örnek alacaktır:

BoxView WidthRequest ve HeightRequest özelliklerini 40’a başlattığı için şimdi BoxView 40 birim karedir. Bu iki özellik biraz açıklama gerektirir:

VisualElement, Width ve Height özelliklerini tanımlar, ancak bu özellikler read only’dir. VisualElement aynı zamanda hem settable hem de gettable olan WidthRequest ve HeightRequest özelliklerini tanımlar. Normalde, tüm bu özellikler -1’e (bunlar aslında tanımsız oldukları anlamına gelir) başlatılır, ancak BoxView gibi bazı View türevleri WidthRequest ve HeightRequest özelliklerini belirli değerlere ayarlar.

Görünümün belirli bir boyut olmasını istiyorsanız WidthRequest ve HeightRequest özelliklerini ayarlayabilirsiniz. Ancak bu özellikler (adlarından da anlaşılacağı üzere) istenen bir boyutu veya tercih edilen bir boyutu belirtmektedir. Görünüm kabını doldurmaya izin verilirse (container fill), bu özellikler yok sayılır.

BoxView, varsayılan boyutunu OnSizeRequest metodunu override ederek 40 değerlerine ayarlar. Bu ayarları, BoxView’ın bu konudaki hiç kimsenin fikri yoksa, olmasını istediği bir boyut olarak düşünebilirsiniz. BoxView sayfayı doldurmaya (fill) izin verildiğinde WidthRequest ve HeightRequest yok sayıldığını zaten görmüştünüz.

İşte bu bölümdeki sürümle birlikte verilen SizedBoxView programının kodları:

Şimdi, belirli bir boyut ve renkler açıkça belirlenmiş bir BoxView elde ediyoruz:

Frame ve BoxView’ı gelişmiş bir renk listesinde kullanalım. ColorBlocks programında CreateColorLabel yerine CreateColorView adında bir metod çağrısı yapılması dışında ReflectedColors’daki ile hemen hemen aynı olan bir sayfa constructor’ı bulunur. İşte bu metod:

 

CreateColorView metodu, RGB bileşimi ve Renk Tonu, Doygunluk ve Parlaklık değerleri için renk gösteren bir BoxView, rengin adı için bir Label ve diğer iki StackLayout içeren yatay bir StackLayout içeren bir Frame döndürür. Color.Default değeri için RGB ve HSL görüntüleri anlamsızdır, böylece iç StackLayout’ın IsVisible özelliği false olarak ayarlanmış olur. StackLayout hala var, ancak sayfa oluşturulduğunda yok sayılıyor.

Program hangi öğenin BoxView, Renk adıyla Label veya RGB ve HSL değerleriyle iki Label görünümü gibi her rengin yüksekliğini belirleyeceğini bilmiyor; böylece tüm Label görünümlerini merkezlendiriyor. Gördüğünüz gibi, BoxView, metnin yüksekliğine uyacak şekilde genişler.

 

Previous
Xamarin.Forms Genişletme Ayarı – Bölüm 18
Next
Open Source Xamarin

Leave a comment

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