Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Bu kitap 2016 baharında yayımlanmıştır ve o zamandan beri güncellenmemiştir. Kitapta değerli kalan çok şey vardır, ancak bazı malzemeler eskidir ve bazı konular artık tamamen doğru veya eksiksiz değildir.
şu ana kadar içinde Xamarin.Forms birkaç boyutla karşılaşıldı:
- iOS durum çubuğunun yüksekliği 20'dir
- varsayılan
BoxViewgenişliği ve yüksekliği 40'dır - içindeki varsayılan
Paddingdeğer 20'dirFrame - üzerindeki
StackLayoutvarsayılanSpacingdeğer 6'dır Device.GetNamedSizeyöntemi sayısal yazı tipi boyutu döndürür
Bu boyutlar piksel değildir. Bunun yerine, her platform tarafından bağımsız olarak tanınan cihazdan bağımsız birimlerdir.
Pikseller, noktalar, dps, DIP'ler ve DIU'lar
Apple Mac ve Microsoft Windows'un geçmişlerinin başlarında, programcılar piksel birimlerinde çalıştı. Ancak, daha yüksek çözünürlüklü ekranların ortaya çıkması, ekran koordinatlarına daha sanallaştırılmış ve soyut bir yaklaşım gerektirir. Mac dünyasında programcılar geleneksel olarak 1/72 inç nokta birimlerinde çalışırken, Windows geliştiricileri 96/1/96 inç tabanlı cihazdan bağımsız birimler (DIU) kullandı.
Ancak mobil cihazlar genellikle yüze çok daha yakın tutulur ve masaüstü ekranlardan daha yüksek çözünürlüğe sahiptir ve bu da daha yüksek bir piksel yoğunluğunun tolere edilebileceği anlamına gelir.
Apple iPhone ve iPad cihazlarını hedefleyen programcılar nokta birimlerinde çalışmaya devam ediyor, ancak inçte bu noktalardan 160 tane var. Cihaza bağlı olarak, noktadan 1, 2 veya 3 piksel olabilir.
Android benzerdir. Programcılar yoğunluk bağımsız piksel (dps) birimlerinde çalışır ve dps ile pikseller arasındaki ilişki 160 dp'den inç'e dayanır.
Windows telefonlar ve mobil cihazlar, 160'a yakın cihazdan bağımsız birimi inç olarak işaret eden ölçeklendirme faktörleri de oluşturdu.
Not
Xamarin.Forms artık Windows tabanlı telefon veya mobil cihazı desteklemez.
Özetle, telefonları ve tabletleri hedefleyen bir Xamarin.Forms programcı, tüm ölçü birimlerinin aşağıdaki ölçütlere dayandığını varsayabilir:
- İnç için 160 birim, eşdeğer
- Santimetreye 64 birim
tarafından tanımlanan VisualElement salt okunur Width ve Height özellikler varsayılan olarak –1 "sahte" değerlerine sahiptir. Yalnızca bir öğe boyutlandırıldığında ve düzende barındırıldığında bu özellikler cihazdan bağımsız birimlerdeki öğenin gerçek boyutunu yansıtır. Bu boyut öğesindeki herhangi bir Padding kümeyi içerir, ancak öğesini Marginiçermez.
Görsel öğe veya Height değiştiğinde SizeChanged Width olayı tetikler. WhatSize örneği, program ekranının boyutunu görüntülemek için bu olayı kullanır.
Ölçüm boyutları
MetricalBoxView, bir inç yüksekliğinde ve bir BoxView santimetre genişliğinde görüntülemek için ve HeightRequest kullanırWidthRequest.
Tahmini yazı tipi boyutları
FontSizes örneği, yazı tipi boyutlarını nokta birimleri olarak belirtmek için 160 birimden inçe kuralının nasıl kullanılacağını gösterir. Bu tekniği kullanan platformlar arasındaki görsel tutarlılık değerinden daha Device.GetNamedSizeiyidir.
Metni kullanılabilir boyuta sığdırma
Aşağıdaki ölçütleri kullanarak bir metin bloğunu hesaplayarak belirli bir FontSize dikdörtgene Label sığdırmak mümkündür:
- Satır aralığı, yazı tipi boyutunun %120'sindedir (Windows platformlarında %130).
- Ortalama karakter genişliği yazı tipi boyutunun %50'sindedir.
EstimatedFontSize örneği bu tekniği gösterir. Bu program özellik kullanılabilir olmadan önce Margin yazılmıştır, bu nedenle kenar boşluğu simülasyonu yapmak için ayarı Padding ile kullanırContentView.
Boyuta uygun saat
FitToSizeClock örneği, saati güncelleştirme zamanı geldiğinde uygulamaya düzenli olarak bildirimde bulunan bir zamanlayıcı başlatmak için komutunu Device.StartTimer gösterir. Yazı tipi boyutu, ekranın olabildiğince büyük olması için sayfa genişliğinin altıda birine ayarlanır.
Erişilebilirlik sorunları
EstimatedFontSize programı ve FitToSizeClock programı ince bir kusur içerir: Kullanıcı Android veya Windows 10 Mobile'da telefonun erişilebilirlik ayarlarını değiştirirse, program artık yazı tipi boyutuna göre metnin ne kadar büyük işlendiğini tahmin edebilir. AccessibilityTest örneği bu sorunu gösterir.
Metni ampirik olarak sığdırma
Metni dikdörtgene sığdırmanın bir diğer yolu da işlenen metin boyutunu ampirik olarak hesaplamak ve yukarı veya aşağı ayarlamaktır. Kitaptaki program, öğenin istenen boyutunu elde etmek için görsel öğeyi çağırır GetSizeRequest . Bu yöntem kullanım dışı bırakıldı ve programlar bunun yerine öğesini çağırmalıdır Measure.
için Label, ilk bağımsız değişken kapsayıcının genişliği olmalıdır (kaydırmaya izin vermek için), ikinci bağımsız değişken ise yüksekliği kısıtlanmamış hale getirmek için Double.PositiveInfinity olarak ayarlanmalıdır. EmpiricalFontSize örneği bu tekniği gösterir.
