Пример #1
0
        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);
        }
Пример #2
0
 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));
     }
 }