|
12 | 12 |
|
13 | 13 | import android.content.Context;
|
14 | 14 | import android.graphics.Color;
|
| 15 | +import android.graphics.Paint; |
15 | 16 | import android.graphics.Rect;
|
16 | 17 | import android.graphics.Typeface;
|
17 | 18 | import android.graphics.drawable.Drawable;
|
|
53 | 54 | import com.facebook.react.views.text.ReactAbsoluteSizeSpan;
|
54 | 55 | import com.facebook.react.views.text.ReactBackgroundColorSpan;
|
55 | 56 | import com.facebook.react.views.text.ReactForegroundColorSpan;
|
| 57 | +import com.facebook.react.views.text.ReactStrikethroughSpan; |
| 58 | +import com.facebook.react.views.text.ReactUnderlineSpan; |
56 | 59 | import com.facebook.react.views.text.ReactSpan;
|
57 | 60 | import com.facebook.react.views.text.ReactTextUpdate;
|
58 | 61 | import com.facebook.react.views.text.ReactTypefaceUtils;
|
@@ -703,6 +706,26 @@ public boolean test(ReactForegroundColorSpan span) {
|
703 | 706 | return span.getForegroundColor() == getCurrentTextColor();
|
704 | 707 | }
|
705 | 708 | });
|
| 709 | + |
| 710 | + stripSpansOfKind( |
| 711 | + sb, |
| 712 | + ReactStrikethroughSpan.class, |
| 713 | + new SpanPredicate<ReactStrikethroughSpan>() { |
| 714 | + @Override |
| 715 | + public boolean test(ReactStrikethroughSpan span) { |
| 716 | + return (getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) != 0; |
| 717 | + } |
| 718 | + }); |
| 719 | + |
| 720 | + stripSpansOfKind( |
| 721 | + sb, |
| 722 | + ReactUnderlineSpan.class, |
| 723 | + new SpanPredicate<ReactUnderlineSpan>() { |
| 724 | + @Override |
| 725 | + public boolean test(ReactUnderlineSpan span) { |
| 726 | + return (getPaintFlags() & Paint.UNDERLINE_TEXT_FLAG) != 0; |
| 727 | + } |
| 728 | + }); |
706 | 729 | }
|
707 | 730 |
|
708 | 731 | private <T> void stripSpansOfKind(
|
@@ -749,6 +772,14 @@ private void restoreStyleEquivalentSpans(SpannableStringBuilder workingText) {
|
749 | 772 | spans.add(new ReactBackgroundColorSpan(backgroundColor));
|
750 | 773 | }
|
751 | 774 |
|
| 775 | + if ((getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) != 0) { |
| 776 | + spans.add(new ReactStrikethroughSpan()); |
| 777 | + } |
| 778 | + |
| 779 | + if ((getPaintFlags() & Paint.UNDERLINE_TEXT_FLAG) != 0) { |
| 780 | + spans.add(new ReactUnderlineSpan()); |
| 781 | + } |
| 782 | + |
752 | 783 | for (Object span : spans) {
|
753 | 784 | workingText.setSpan(span, 0, workingText.length(), spanFlags);
|
754 | 785 | }
|
|
0 commit comments