示例#1
0
            public bool OnActionItemClicked(ActionMode mode, IMenuItem item)
            {
                CharacterStyle         cs;
                int                    start = edt.SelectionStart;
                int                    end   = edt.SelectionEnd;
                SpannableStringBuilder ssb   = new SpannableStringBuilder(edt.Text);

                switch (item.ItemId)
                {
                case Resource.Id.bold:
                    cs = new StyleSpan(TypefaceStyle.Bold);
                    ssb.SetSpan(cs, start, end, SpanTypes.ExclusiveExclusive);
                    edt.Text = ssb.ToString();
                    return(true);

                case Resource.Id.italic:
                    cs = new StyleSpan(TypefaceStyle.Italic);
                    ssb.SetSpan(cs, start, end, SpanTypes.ExclusiveExclusive);
                    edt.Text = ssb.ToString();
                    return(true);

                case Resource.Id.underline:
                    cs = new UnderlineSpan();
                    ssb.SetSpan(cs, start, end, SpanTypes.ExclusiveExclusive);
                    edt.Text = ssb.ToString();
                    return(true);

                case Resource.Id.strikethrough:
                    cs = new StrikethroughSpan();
                    ssb.SetSpan(cs, start, end, SpanTypes.ExclusiveExclusive);
                    edt.Text = ssb.ToString();
                    return(true);
                }
                return(false);
            }
示例#2
0
        private static void HandleFormatRun(ISpannable spannableString, IAttributedTextRun run)
        {
            var attributes = run.Attributes;
            var start      = run.Start;
            var end        = start + run.Length;

            var fontName = attributes.GetFontName();

            if (fontName != null)
            {
                var typefaceSpan = new TypefaceSpan(fontName);
                spannableString.SetSpan(typefaceSpan, start, end, SpanTypes.ExclusiveExclusive);
            }

            if (attributes.GetBold() && attributes.GetItalic())
            {
                var span = new StyleSpan(TypefaceStyle.BoldItalic);
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }
            else if (attributes.GetBold())
            {
                var span = new StyleSpan(TypefaceStyle.Bold);
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }
            else if (attributes.GetItalic())
            {
                var span = new StyleSpan(TypefaceStyle.Italic);
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }

            if (attributes.GetUnderline())
            {
                var span = new UnderlineSpan();
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }

            var foregroundColor = attributes.GetForegroundColor()?.ParseAsInts()?.ToColor();

            if (foregroundColor != null)
            {
                var span = new ForegroundColorSpan((global::Android.Graphics.Color)foregroundColor);
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }

            var backgroundColor = attributes.GetBackgroundColor()?.ParseAsInts()?.ToColor();

            if (backgroundColor != null)
            {
                var span = new BackgroundColorSpan((global::Android.Graphics.Color)backgroundColor);
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }

            if (attributes.GetSubscript())
            {
                var span = new SubscriptSpan();
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }

            if (attributes.GetSuperscript())
            {
                var span = new SuperscriptSpan();
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }

            if (attributes.GetStrikethrough())
            {
                var span = new StrikethroughSpan();
                spannableString.SetSpan(span, start, end, SpanTypes.ExclusiveExclusive);
            }

            if (attributes.GetUnorderedList())
            {
                var bulletSpan = new BulletSpan();
                spannableString.SetSpan(bulletSpan, start, end, SpanTypes.ExclusiveExclusive);
            }
        }