summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/current.txt11
-rw-r--r--core/java/android/text/style/SuggestionRangeSpan.java34
-rw-r--r--core/java/android/widget/Editor.java8
3 files changed, 43 insertions, 10 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index c5f85d9f7818..a0cd430e8e61 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -45687,6 +45687,17 @@ package android.text.style {
method public void writeToParcel(android.os.Parcel, int);
}
+ public final class SuggestionRangeSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan {
+ ctor public SuggestionRangeSpan();
+ method public int describeContents();
+ method public int getBackgroundColor();
+ method public int getSpanTypeId();
+ method public void setBackgroundColor(int);
+ method public void updateDrawState(@NonNull android.text.TextPaint);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.text.style.SuggestionRangeSpan> CREATOR;
+ }
+
public class SuggestionSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan {
ctor public SuggestionSpan(android.content.Context, String[], int);
ctor public SuggestionSpan(java.util.Locale, String[], int);
diff --git a/core/java/android/text/style/SuggestionRangeSpan.java b/core/java/android/text/style/SuggestionRangeSpan.java
index 2b04a7ac2ab8..1eee99aaac62 100644
--- a/core/java/android/text/style/SuggestionRangeSpan.java
+++ b/core/java/android/text/style/SuggestionRangeSpan.java
@@ -16,8 +16,9 @@
package android.text.style;
-import android.compat.annotation.UnsupportedAppUsage;
+import android.annotation.NonNull;
import android.os.Parcel;
+import android.os.Parcelable;
import android.text.ParcelableSpan;
import android.text.TextPaint;
import android.text.TextUtils;
@@ -25,30 +26,40 @@ import android.text.TextUtils;
/**
* A SuggestionRangeSpan is used to show which part of an EditText is affected by a suggestion
* popup window.
- *
- * @hide
*/
-public class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpan {
+public final class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpan {
private int mBackgroundColor;
- @UnsupportedAppUsage
public SuggestionRangeSpan() {
// 0 is a fully transparent black. Has to be set using #setBackgroundColor
mBackgroundColor = 0;
}
- @UnsupportedAppUsage
- public SuggestionRangeSpan(Parcel src) {
+ /** @hide */
+ public SuggestionRangeSpan(@NonNull Parcel src) {
mBackgroundColor = src.readInt();
}
+ public static final @NonNull Parcelable.Creator<SuggestionRangeSpan>
+ CREATOR = new Parcelable.Creator<SuggestionRangeSpan>() {
+ @Override
+ public SuggestionRangeSpan createFromParcel(Parcel source) {
+ return new SuggestionRangeSpan(source);
+ }
+
+ @Override
+ public SuggestionRangeSpan[] newArray(int size) {
+ return new SuggestionRangeSpan[size];
+ }
+ };
+
@Override
public int describeContents() {
return 0;
}
@Override
- public void writeToParcel(Parcel dest, int flags) {
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
writeToParcelInternal(dest, flags);
}
@@ -67,13 +78,16 @@ public class SuggestionRangeSpan extends CharacterStyle implements ParcelableSpa
return TextUtils.SUGGESTION_RANGE_SPAN;
}
- @UnsupportedAppUsage
public void setBackgroundColor(int backgroundColor) {
mBackgroundColor = backgroundColor;
}
+ public int getBackgroundColor() {
+ return mBackgroundColor;
+ }
+
@Override
- public void updateDrawState(TextPaint tp) {
+ public void updateDrawState(@NonNull TextPaint tp) {
tp.bgColor = mBackgroundColor;
}
}
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 29425b5364a6..96952089ef51 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -69,6 +69,7 @@ import android.text.SpanWatcher;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
+import android.text.SpannedString;
import android.text.StaticLayout;
import android.text.TextUtils;
import android.text.method.KeyListener;
@@ -4120,8 +4121,15 @@ public class Editor {
mSuggestionRangeSpan.setBackgroundColor(
(underlineColor & 0x00FFFFFF) + (newAlpha << 24));
}
+ boolean sendAccessibilityEvent = mTextView.isVisibleToAccessibility();
+ CharSequence beforeText = sendAccessibilityEvent
+ ? new SpannedString(spannable, true) : null;
spannable.setSpan(mSuggestionRangeSpan, spanUnionStart, spanUnionEnd,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ if (sendAccessibilityEvent) {
+ mTextView.sendAccessibilityEventTypeViewTextChanged(
+ beforeText, spanUnionStart, spanUnionEnd);
+ }
mSuggestionsAdapter.notifyDataSetChanged();
return true;