Xamarin.Forms Span ve Font Attributes – Bölüm 15

Xamarin

Uygulama renk şemasını değiştirme

Android, Windows ve Windows Phone için uygulamanızı hedeflerken, uygulamanın renk şemasını değiştirmek mümkündür. Bu durumda, Content.Page’in BackgroundColor’u ve Label’ın TextColor özelliği için Color.Default ayarlarının farklı anlamları olacaktır.

Android’de renk düzenleri ayarlamak için çeşitli yollar vardır, ancak en basit olanı Android projesinin Properties klasöründeki AndroidManifest.xml dosyasında yalnızca tek bir özellik ayarı gerektirir. Bu dosya normalde şu şekilde görünüyor:

Aşağıdaki attribute (özellik)’u, application tagine ekleyin:

Artık Android uygulamanız açık renkli bir arka plan üzerine koyu renkli metin görüntüleyecektir.

Yazı tipi boyutları ve nitelikleri

Varsayılan olarak, Label, her platform tarafından tanımlanan bir sistem fontunu kullanır, ancak Label ayrıca bu fontu değiştirmek için kullanabileceğiniz çeşitli özellikleri tanımlar. Label, bu fontla ilgili özelliklere sahip iki sınıftan biridir; Button diğeridir.

Bu yazı tipini değiştirmenize izin veren özellikler şunlardır:

  • String türündeki FontFamily
  • Double FontSize
  • FontAttributes türünden FontAttributes, üç üyeli bir numaralandırma: None, Kalın, Ve italik.

Bunlardan en zoru FontFamily’dir. Teorik olarak, onu “Times Roman” gibi bir font ailesi adına ayarlayabilirsiniz, ancak yalnızca belirli font ailesi belirli platformda desteklendiğinde çalışacaktır. Bu nedenle, muhtemelen Device.OnPlatform ile bağlantılı olarak FontFamily’yi kullanacaksınız ve her platformun desteklenen font ailesi adlarını bilmelisiniz.

FontSize özelliği de biraz garip. Yazı tipi yüksekliğini kabaca belirten bir sayıya ihtiyacınız var, ancak hangi sayıları kullanmalısınız? Bu zor bir sorudur ve bu nedenle, iyi bir yazı tipi boyutu seçmek için araçlar elde edildiğinde, ileriki bölümde incelenmektedir.

Ancak o zamana kadar Device sınıfı, GetNamedSize adlı static bir metotla yardımcı olur. Bu metod, NamedSize numaralandırma üyesine ihtiyaç duyar:

  • Default
  • Micro
  • Small
  • Medium
  • Large

GetNamedSize ayrıca, bu font boyutu ile boyutlandırma yaptığınız sınıfın türünü de gerektirir ve bu argüman typeof (Label) veya typeof (Button) olacaktır.

NamedSize.Medium üyesi kesinlikle NamedSize.Default ile aynı boyutta değildir.

FontAttributes, kullanılacak üç yazı tipi ile ilgili özelliklerin en karmaşığıdır. Bu küçük kod snippet’i şu şekilde gösterdiği için Bold veya Italic veya her ikisini de belirtebilirsiniz:

Windows 10 Mobile ekranı, metni tek bir satırda gösterecek kadar geniş değildir.

Biçimlendirilmiş metin

Gördüğünüz gibi, Label’da bir stringe ayarlayabileceğiniz bir Text özelliği vardır. Ancak Label ayrıca düzgün olmayan biçimlendirme ile bir paragraf oluşturan alternatif bir FormattedText özelliği vardır.

FormattedText özelliği, Span nesnelerinin (objects) bir koleksiyonu olan IList <Span> türünde Spans özelliğine sahip olan FormattedString türündedir. Her Span nesnesi (object), altı özellik ile yönetilen, tek biçimli (uniformly) olarak biçimlendirilmiş bir metin parçalarıdır:

  • Text
  • FontFamily
  • FontSize
  • FontAttributes
  • ForegroundColor
  • BackgroundColor

İşte bir FormattedString nesnesini oluşturmak ve Span nesnelerini Spans koleksiyon özelliğine eklemek için bir yol:

Her Span oluşturulduğunda, doğrudan Spans koleksiyonunun Add metoduna geçirilir. Label’ın bir FontSize of NamedSize.Large verildiğine ve Bold ayarı da açıkça aynı boyutta verildiğine dikkat edin. Bir Span’a bir FontAttributes ayarı verildiğinde, Label’in FontSize ayarını devralmaz.

Alternatif olarak, Spans koleksiyonunun içeriğini bir çift süslü parantez izleyerek başlatmak mümkündür. Bu süslü parantez içinde Span nesneleri örneklendirilir. Hiçbir metod çağrısı gerekli olmadığından, tüm FormattedString başlatma Label başlatma içinde oluşabilir:

Tek bir Label’ın, satır sonu karakterlerinin eklenmesiyle birlikte birden fazla satırı veya paragrafı gösterecek şekilde bir şeyler yapabiliriz. Birden çok Span nesneleri foreach döngüsündeki bir FormattedString nesnesine eklenir. Her Span nesnesi farklı bir NamedFont değeri kullanır ve ayrıca Device.GetNamedSize’den döndürülen gerçek boyutu görüntüler:

Bunlar piksel boyutları değil! IOS durum çubuğunun yüksekliğinde olduğu gibi bu boyutlara yalnızca bir tür “birim” olarak belirsiz bir şekilde değinmek en iyisidir.

Varsayılan boyut genellikle işletim sistemi tarafından seçilir, ancak diğer boyutlar Xamarin.Forms geliştiricileri tarafından seçilmiştir. IOS’ta Varsayılan Değer Medium ile aynıdır, ancak Android Varsayılanıyla Küçük’le aynıdır ve Windows 10 Mobil’de Varsayılan değer Mikro’dan daha küçüktür.

Elbette, tek bir Label’da birden çok Span nesne kullanılması, metnin birden fazla paragrafını işlemek için iyi bir yol değildir. Dahası, metin sıklıkla çok fazla paragrafa sahiptir ve bu paragraflar kaydırılmalıdır. Bir sonraki bölümdeki iş StackLayout ve ScrollView araştırmasıdır.

Previous
Xamarin.Forms Düzen ve Color – Bölüm 14
Next
Xamarin.Forms Bölüm 16 – Color Üzerinden Stacklayout ve Stack’s View

Leave a comment

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