Xamarin Forms HtmlView Nesnesi Oluşturalım

Mobil cihazlarda html görüntüleme ve diğer html üzerindeki işlemler için webview kullanılıyor genellikle fakat yavaşlığından bazı iOS’daki can sıkan güvenlik politikaları nedeni ile ufak bir html yapısını göstermek için webview ile boğuşmak can sıkabiliyor bu gibi basit işler için HtmlView diye bir nesne oluşturup Html metnini bu nesne üzerinde gösterebiliriz.

Xamarin Forms HtmlView

Peki oluşturmayı düşündüğümüz HtmlView nesnesini nasıl oluşturacağız biraz bu kurgu üzerinde konuşalım. Bu ihtiyacı karşılamak için Xamarin Forms’un CustomRenderer çözümününden faydalacağız ve Label nesnesinden türeyecek olan HtmlView nesnemizi Platform özelinde yazılacak olan CustomRendererlarımız içerisinde ilgili platform’a ait native kod blokları ile bu ihtiyacı gideceğiz o zaman hemen işe koyulalım ilk işimiz bahsettiğimiz HtmlView nesnemizi oluşturalım.

iOS

Şimdi ise iOS için olan CustomRenderer kısmını yazalım.

Üstteki kod bloğunu yukarıdan aşağıya açıklayalım 7. satırdaki ExportRenderer ile HtmlLabel nesnesi için HtmlLabelRenderer sınıfının iOS tarafında nesnenin render edilme aşamasında override ettiğimiz OnElementChanged metoduna girişini sağlamış olduk ve render edilme aşamasından önce burada yazdığımız kod bloklarından Label.Text özelliğindeki değer işlendikten sonra Yeni hazırladığımız metin render edilmiş olacak.

Android

Şimdi Android CustomRenderer kısmını yazalım. Android’de iOS kısmı kadar iş yok 1-2 satırla işi çözebiliyoruz.

Android tarafında pek açıklanacak bir olay yok Control.SetText metodu içerisinde Html.FromHtml metoduna Label.Text özelliğindeki değeri veriyoruz ve bizim için metni Html olarak işliyor ve Label nenesine bu çıktıyı set ediyor.

Makalenin ilk giriş kısmında belirttiğim birşey vardı basit html kodlarınız için bu metodu tercih edebilirsiniz demiştim bunun nedeni şudur çok sınırlı sayıda html elementi desteklenmektedir desteklenen html etiketleri ise şu şekildedir.

Android tarafında desteklenen Html etiketleri

  • p
  • ul
  • li
  • div
  • span
  • strong
  • b
  • em
  • cite
  • dfn
  • i
  • big
  • small
  • font
  • blockquote
  • tt
  • a
  • u
  • del
  • s
  • strike
  • sup
  • sub
  • h1
  • h2
  • h3
  • h4
  • h5
  • h6
  • img
  • br

Android tarafında Html konusunda daha detaylı bilgi için https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/text/Html.java#791 adresindeki kaynak koduna gözatabilirsiniz.

iOS tarafında desteklenen Html etiketleri

iOS tarafında neredeyse tüm etiketler ve tanımlar çok iyi sonuç veriyor üstte listelediğimiz html etiketleri android tarafında destekleniyor dedik fakat yarım yamalak alttaki örnek ekran görüntüsünda Android(solda), iOS(sağda) çıktılarının ne kadar önemli derecede fark ettiğini görüyorsunuzdur. Android tarafında head arasına yazdığımız style etiketi olduğu gibi ekrana basılmış sonrasında inline style’ler gözardı edilmiş ve ul-ol etiketleri destekleniyor denmesine rağmen android’de düz metin olarak gösterildiğini görüyoruz fakat iOS’da ekran görüntüsü altında sizlerle paylaştığım kodlarda çalışmayan hiçbir kısım yoktur tam olarak beklediğimiz çıktıyı aldık ilk defa iOS’un android’den daha fazla özgür olduğu bir nokta ile karşılaştım o yüzden iOS hakkında zincirlerim çok ufakta olsa kırılmış oldu 🙂

giphy

Şimdi Android ve iOS ekran görüntülerine gözatalım gerçektende bahsettiğimiz gibi çıktıda bu kadar fark oluyormu.

html view android and ios preview

Kullanılan Html kodu ise şu şekildedir.

Xamarin Forms HtmlView nesnesi nasıl oluşturulur sorusuna bu makalede cevap bulabildiğimizi düşünüyorum en azından basit Html kodlarınızı göstermek için kullanabileceğiniz WebView haricinden bir alternatif yöntem olduğunu bilmek bazı durumlarda ilaç gibi gelebilir.

Bir sonraki Xamarin macerasında görüşmek ümidiyle 🙂

Xamarin Forms HtmlView, Xamarin Forms HtmView Android, Xamarin Forms HtmlView iOS

5/5 - (4 votes)

Murat Öner sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya devam et