Loading core/java/android/text/style/SuggestionRangeSpan.java +13 −8 Original line number Diff line number Diff line Loading @@ -28,15 +28,11 @@ import android.text.TextUtils; * @hide */ public class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpan { private final int mBackgroundColor; private int mBackgroundColor; @Override public void updateDrawState(TextPaint tp) { tp.bgColor = mBackgroundColor; } public SuggestionRangeSpan(int color) { mBackgroundColor = color; public SuggestionRangeSpan() { // 0 is a fully transparent black. Has to be set using #setBackgroundColor mBackgroundColor = 0; } public SuggestionRangeSpan(Parcel src) { Loading @@ -57,4 +53,13 @@ public class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpa public int getSpanTypeId() { return TextUtils.SUGGESTION_RANGE_SPAN; } public void setBackgroundColor(int backgroundColor) { mBackgroundColor = backgroundColor; } @Override public void updateDrawState(TextPaint tp) { tp.bgColor = mBackgroundColor; } } core/java/android/text/style/SuggestionSpan.java +10 −0 Original line number Diff line number Diff line Loading @@ -264,4 +264,14 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { tp.setUnderlineText(mEasyCorrectUnderlineColor, mEasyCorrectUnderlineThickness); } } /** * @return The color of the underline for that span, or 0 if there is no underline */ public int getUnderlineColor() { // The order here should match what is used in updateDrawState if ((mFlags & FLAG_MISSPELLED) != 0) return mMisspelledUnderlineColor; if ((mFlags & FLAG_EASY_CORRECT) != 0) return mEasyCorrectUnderlineColor; return 0; } } core/java/android/widget/TextView.java +18 −6 Original line number Diff line number Diff line Loading @@ -9559,8 +9559,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener TextView.this.getPositionListener().removeSubscriber(SuggestionsPopupWindow.this); if ((mText instanceof Editable) && mSuggestionRangeSpan != null) { ((Editable) mText).removeSpan(mSuggestionRangeSpan); if ((mText instanceof Spannable)) { ((Spannable) mText).removeSpan(mSuggestionRangeSpan); } setCursorVisible(mCursorWasVisibleBeforeSuggestions); Loading Loading @@ -9754,6 +9754,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener int spanUnionEnd = 0; SuggestionSpan misspelledSpan = null; int underlineColor = 0; for (int spanIndex = 0; spanIndex < nbSpans; spanIndex++) { SuggestionSpan suggestionSpan = suggestionSpans[spanIndex]; Loading @@ -9766,6 +9767,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener misspelledSpan = suggestionSpan; } // The first span dictates the background color of the highlighted text if (spanIndex == 0) underlineColor = suggestionSpan.getUnderlineColor(); String[] suggestions = suggestionSpan.getSuggestions(); int nbSuggestions = suggestions.length; for (int suggestionIndex = 0; suggestionIndex < nbSuggestions; suggestionIndex++) { Loading Loading @@ -9808,9 +9812,17 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (mNumberOfSuggestions == 0) return false; if (mSuggestionRangeSpan == null) mSuggestionRangeSpan = new SuggestionRangeSpan(mHighlightColor); ((Editable) mText).setSpan(mSuggestionRangeSpan, spanUnionStart, spanUnionEnd, if (mSuggestionRangeSpan == null) mSuggestionRangeSpan = new SuggestionRangeSpan(); if (underlineColor == 0) { // Fallback on the default highlight color when the first span does not provide one mSuggestionRangeSpan.setBackgroundColor(mHighlightColor); } else { final float BACKGROUND_TRANSPARENCY = 0.3f; final int newAlpha = (int) (Color.alpha(underlineColor) * BACKGROUND_TRANSPARENCY); mSuggestionRangeSpan.setBackgroundColor( (underlineColor & 0x00FFFFFF) + (newAlpha << 24)); } spannable.setSpan(mSuggestionRangeSpan, spanUnionStart, spanUnionEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mSuggestionsAdapter.notifyDataSetChanged(); Loading Loading
core/java/android/text/style/SuggestionRangeSpan.java +13 −8 Original line number Diff line number Diff line Loading @@ -28,15 +28,11 @@ import android.text.TextUtils; * @hide */ public class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpan { private final int mBackgroundColor; private int mBackgroundColor; @Override public void updateDrawState(TextPaint tp) { tp.bgColor = mBackgroundColor; } public SuggestionRangeSpan(int color) { mBackgroundColor = color; public SuggestionRangeSpan() { // 0 is a fully transparent black. Has to be set using #setBackgroundColor mBackgroundColor = 0; } public SuggestionRangeSpan(Parcel src) { Loading @@ -57,4 +53,13 @@ public class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpa public int getSpanTypeId() { return TextUtils.SUGGESTION_RANGE_SPAN; } public void setBackgroundColor(int backgroundColor) { mBackgroundColor = backgroundColor; } @Override public void updateDrawState(TextPaint tp) { tp.bgColor = mBackgroundColor; } }
core/java/android/text/style/SuggestionSpan.java +10 −0 Original line number Diff line number Diff line Loading @@ -264,4 +264,14 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { tp.setUnderlineText(mEasyCorrectUnderlineColor, mEasyCorrectUnderlineThickness); } } /** * @return The color of the underline for that span, or 0 if there is no underline */ public int getUnderlineColor() { // The order here should match what is used in updateDrawState if ((mFlags & FLAG_MISSPELLED) != 0) return mMisspelledUnderlineColor; if ((mFlags & FLAG_EASY_CORRECT) != 0) return mEasyCorrectUnderlineColor; return 0; } }
core/java/android/widget/TextView.java +18 −6 Original line number Diff line number Diff line Loading @@ -9559,8 +9559,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener TextView.this.getPositionListener().removeSubscriber(SuggestionsPopupWindow.this); if ((mText instanceof Editable) && mSuggestionRangeSpan != null) { ((Editable) mText).removeSpan(mSuggestionRangeSpan); if ((mText instanceof Spannable)) { ((Spannable) mText).removeSpan(mSuggestionRangeSpan); } setCursorVisible(mCursorWasVisibleBeforeSuggestions); Loading Loading @@ -9754,6 +9754,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener int spanUnionEnd = 0; SuggestionSpan misspelledSpan = null; int underlineColor = 0; for (int spanIndex = 0; spanIndex < nbSpans; spanIndex++) { SuggestionSpan suggestionSpan = suggestionSpans[spanIndex]; Loading @@ -9766,6 +9767,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener misspelledSpan = suggestionSpan; } // The first span dictates the background color of the highlighted text if (spanIndex == 0) underlineColor = suggestionSpan.getUnderlineColor(); String[] suggestions = suggestionSpan.getSuggestions(); int nbSuggestions = suggestions.length; for (int suggestionIndex = 0; suggestionIndex < nbSuggestions; suggestionIndex++) { Loading Loading @@ -9808,9 +9812,17 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (mNumberOfSuggestions == 0) return false; if (mSuggestionRangeSpan == null) mSuggestionRangeSpan = new SuggestionRangeSpan(mHighlightColor); ((Editable) mText).setSpan(mSuggestionRangeSpan, spanUnionStart, spanUnionEnd, if (mSuggestionRangeSpan == null) mSuggestionRangeSpan = new SuggestionRangeSpan(); if (underlineColor == 0) { // Fallback on the default highlight color when the first span does not provide one mSuggestionRangeSpan.setBackgroundColor(mHighlightColor); } else { final float BACKGROUND_TRANSPARENCY = 0.3f; final int newAlpha = (int) (Color.alpha(underlineColor) * BACKGROUND_TRANSPARENCY); mSuggestionRangeSpan.setBackgroundColor( (underlineColor & 0x00FFFFFF) + (newAlpha << 24)); } spannable.setSpan(mSuggestionRangeSpan, spanUnionStart, spanUnionEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mSuggestionsAdapter.notifyDataSetChanged(); Loading