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 🙂

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

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

Xamarin Forms HtmlView Nesnesi Oluşturalım
5 (100%) 4 oy

Bunlar da hoşunuza gidebilir...

8
Kimler Neler Demiş?

avatar
6 Comment threads
2 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
mehmetMurat ÖNERHalil ArtutSelim Toksevgii Recent comment authors

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Bildir
aslan15
Ziyaretçi
aslan15

güzel ipucu teşekkürler

kralx
Ziyaretçi
kralx

teşekkürler

sevgii
Ziyaretçi
sevgii

Xamarin traditional ios kullanıyorum xamarin forms kullanmadan ios’da kullanabilirmiyim?

Selim Tok
Ziyaretçi
Selim Tok

Bende hep webview kullanıyordum mobil geliştirmelerde iyi oldu benim için.

Halil Artut
Ziyaretçi
Halil Artut

Teşekkürler paylaşım için

mehmet
Ziyaretçi
mehmet

uwp için olan kod yokmu?