Xamarin.Forms Genişletme Ayarı – Bölüm 18

Xamarin

Muhtemelen, HorizontalOptions ve VerticalOptions özelliklerinin birden fazla seçenek olduğu gibi çoğul olduklarını fark etmişsinizdir. Bu özellikler genellikle başka bir çoğul olan LayoutOptions yapısının statik bir alanına ayarlanır.

Şimdiye dek yapılan tartışmalar, LayoutOptions’ın önceden tanımlanmış değerlerini döndüren şu static read-only LayoutOptions alanlarına odaklanmıştır:

  • Start
  • Center
  • End
  • Fill

View sınıfı tarafından varsayılan olarak belirlenen LayoutOptions.Fill, view’un container’ı doldurduğu (fills) anlamına gelir.

LayoutOptions yapısı, henüz tartışılmayan dört ek static read-only alana sahiptir:

  • StartAndExpand
  • CenterAndExpand
  • EndAndExpand
  • FillAndExpand

LayoutOptions ayrıca, Alignment (Hizalama) ve Expands (Genişletme) adı verilen iki durum özelliğini tanımlar. AndExpand ile biten statik alanlar tarafından döndürülen dört LayoutOptions durumu, Expands (Genişletme) özelliği true olarak ayarlanır.

Bu Expands özelliği yalnızca StackLayout tarafından tanınır. Sayfanın düzenini yönetmek için çok yararlı olabilir, ancak ilk karşılaşmada kafa karıştırıcı olabilir. Dikey StackLayout’da rol alan Expands gereksinimleri şunlardır:

  • StackLayout içeriğinin toplam yüksekliği StackLayout’un kendisinden daha düşük olmalıdır. Başka bir deyişle, boş bazı dikey alan StackLayout’da bulunmalıdır.
  • StackLayout’un Start, Center veya End olarak ayarlanmış kendi VerticalOptions özelliğine sahip olamayacağı anlamına gelir, çünkü bu StackLayout’ın çocuklarının toplam yüksekliğine eşit bir yüksekliğe sahip olmasına ve ekstra alana sahip olmamasına neden olur.
  • StacksLayout’tan en az bir çocuğun VerticalOptions ayarına sahip olması gerekir; bu Expands özelliği true olarak ayarlanır.

Bu koşullar yerine getirildiğinde, VerticalOptions ayarına sahip tüm StackLayout çocuklar arasında ek olarak dikey alan eşit olarak ayrılır ve Expands değerleri true değerine eşit olur. Bu çocukların her biri, StackLayout’da normalden daha büyük bir alan alır. Çocuğun bu yuvayı nasıl işgal ettiği LayoutOptions değerinin Alignment ayarına bağlıdır: Start, Center, End, veya Fill.

Vertical StackLayout’da olası tüm VerticalOptions ayarlarıyla Label nesneleri oluşturmak için yansımayı (reflection) kullanan VerticalAyari adlı bir program. Arka plan ve ön plan rengi değiştirerek her Label’ın ne kadar yer kapladığını görebilirsiniz. Program, LayoutOptions yapısının alanlarını görsel açıdan daha aydınlık bir şekilde sıralamak için Language Integrated Query (LINQ) kullanır:

(Linq’i basitçe hatırlamak için bu makaleyi öneririm)

 

 

Mavi arka planlardaki sarı metinli Label görünümleri, Expands bayrağı ayarlanmadan LayoutOptions değerlerine ayarlanmış VerticalOptions özelliklerine sahip Label görünümleridir. Dikey StackLayout öğesinin LayoutOptions değerinde Expands bayrağı ayarlanmamışsa, VerticalOptions ayarı yoksayılır. Gördüğünüz gibi, Label dikey StackLayout’da yalnızca ihtiyaç duyduğu kadar dikey alan kaplar.

Bu StackLayout içindeki çocukların toplam yüksekliği StackLayout’un yüksekliğinden daha düşüktür, bu nedenle StackLayout’un fazladan boşluğu vardır. VerticalOptions özellikleri Expands bayrağı ayarlanmış LayoutOptions değerlerine ayarlanmış dört çocuk içerir, bu yüzden bu ekstra alan bu dört çocuğa eşit şekilde ayrılır.

Bu dört durumda-sarı arka planlardaki mavi metinli Label görünümleri-LayoutOptions değerinin Alignment özelliği, çocuğun fazladan alanı içeren alanla nasıl hizalandığını gösterir. Birincisi (VerticalOptions özelliği, LayoutOptions.StartAndExpand olarak ayarlandı) bu fazladan alanın üstündedir. İkincisi (CenterAndExpand) fazladan boşluğun ortasındadır. Üçüncüsü (EndAndExpand) ekstra alanın altında. Bununla birlikte, bu üç durumda da Label, arka plan rengiyle gösterildiği gibi yalnızca ihtiyaç duyduğu kadar dikey alana sahip oluyor. Alanın geri kalan kısmı, sayfanın arka plan rengini gösteren StackLayout’a aittir.

Son Label, VerticalOptions özelliği LayoutOptions.FillAndExpand olarak ayarlanmıştır. Bu durumda, sarı arka planın geniş alanı gösterdiği için Label, ek alan dahil olmak üzere tüm alanı kaplar. Metin, bu alanın en üstünde; VerticalTextAlignment varsayılan ayar TextAlignment.Start olmasıdır. Metni alanın içine dikey olarak yerleştirmek için başka bir yere ayarlayın.

LayoutOptions’ın Expand özelliği, görünüm yalnızca bir StackLayout öğesinin altındayken rol alır. Diğer bağlamlarda, yok sayılır.

Previous
VS Code’da Arduino Kullanmak (Using Arduino in VS Code)
Next
Xamarin.Forms BoxView ve Frame (Çerçeve) – Bölüm 19

Leave a comment

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