private void SetText(TextView control, string html) { var htmlLabel = (HtmlLabel)Element; // Set the type of content and the custom tag list handler using var listTagHandler = new ListTagHandler(htmlLabel.AndroidListIndent); // KWI-FIX: added AndroidListIndent parameter var imageGetter = new UrlImageParser(Control); FromHtmlOptions fromHtmlOptions = htmlLabel.AndroidLegacyMode ? FromHtmlOptions.ModeLegacy : FromHtmlOptions.ModeCompact; ISpanned sequence = Build.VERSION.SdkInt >= BuildVersionCodes.N ? Html.FromHtml(html, fromHtmlOptions, imageGetter, listTagHandler) : Html.FromHtml(html, imageGetter, listTagHandler); using var strBuilder = new SpannableStringBuilder(sequence); // Make clickable links if (!Element.GestureRecognizers.Any()) { control.MovementMethod = LinkMovementMethod.Instance; URLSpan[] urls = strBuilder .GetSpans(0, sequence.Length(), Class.FromType(typeof(URLSpan))) .Cast <URLSpan>() .ToArray(); foreach (URLSpan span in urls) { MakeLinkClickable(strBuilder, span); } } // Android adds an unnecessary "\n" that must be removed using ISpanned value = RemoveLastChar(strBuilder); // Finally sets the value of the TextView control.SetText(value, TextView.BufferType.Spannable); }
public static ISpanned GetHtml(string html, FromHtmlOptions flags = FromHtmlOptions.ModeLegacy) { if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { return(Html.FromHtml(html, flags)); } else { return(Html.FromHtml(html)); } }