Add AccessibilityAction ACTION_SHOW_SUGGESTIONS
And implement it for editable text to show the popup window for typo correction. Bug: b/143378480 Test: tested with modified talkback. Change-Id: I8bb1ec87f6bb2177fb4b8fb9a88bfbe10b374173
This commit is contained in:
@@ -2044,6 +2044,7 @@ package android {
|
||||
field public static final int accessibilityActionScrollUp = 16908344; // 0x1020038
|
||||
field public static final int accessibilityActionSetProgress = 16908349; // 0x102003d
|
||||
field public static final int accessibilityActionShowOnScreen = 16908342; // 0x1020036
|
||||
field public static final int accessibilityActionShowSuggestions;
|
||||
field public static final int accessibilityActionShowTooltip = 16908356; // 0x1020044
|
||||
field public static final int accessibilityActionSwipeDown;
|
||||
field public static final int accessibilityActionSwipeLeft;
|
||||
@@ -51459,6 +51460,7 @@ package android.view.accessibility {
|
||||
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_SELECTION;
|
||||
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_TEXT;
|
||||
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_ON_SCREEN;
|
||||
field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_SUGGESTIONS;
|
||||
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_TOOLTIP;
|
||||
field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SWIPE_DOWN;
|
||||
field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SWIPE_LEFT;
|
||||
|
||||
@@ -5104,6 +5104,12 @@ public class AccessibilityNodeInfo implements Parcelable {
|
||||
@NonNull public static final AccessibilityAction ACTION_SWIPE_DOWN =
|
||||
new AccessibilityAction(R.id.accessibilityActionSwipeDown);
|
||||
|
||||
/**
|
||||
* Action to show suggestions for editable text.
|
||||
*/
|
||||
@NonNull public static final AccessibilityAction ACTION_SHOW_SUGGESTIONS =
|
||||
new AccessibilityAction(R.id.accessibilityActionShowSuggestions);
|
||||
|
||||
private final int mActionId;
|
||||
private final CharSequence mLabel;
|
||||
|
||||
|
||||
@@ -2513,7 +2513,7 @@ public class Editor {
|
||||
* the current cursor position or selection range. This method is consistent with the
|
||||
* method to show suggestions {@link SuggestionsPopupWindow#updateSuggestions}.
|
||||
*/
|
||||
private boolean shouldOfferToShowSuggestions() {
|
||||
boolean shouldOfferToShowSuggestions() {
|
||||
CharSequence text = mTextView.getText();
|
||||
if (!(text instanceof Spannable)) return false;
|
||||
|
||||
|
||||
@@ -12105,6 +12105,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
if (canCut()) {
|
||||
info.addAction(AccessibilityNodeInfo.ACTION_CUT);
|
||||
}
|
||||
if (canReplace()) {
|
||||
info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SHOW_SUGGESTIONS);
|
||||
}
|
||||
if (canShare()) {
|
||||
info.addAction(new AccessibilityNodeInfo.AccessibilityAction(
|
||||
ACCESSIBILITY_ACTION_SHARE,
|
||||
@@ -12419,6 +12422,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
}
|
||||
return false;
|
||||
default: {
|
||||
// New ids have static blocks to assign values, so they can't be used in a case
|
||||
// block.
|
||||
if (action == R.id.accessibilityActionShowSuggestions) {
|
||||
return isFocused() && canReplace() && onTextContextMenuItem(ID_REPLACE);
|
||||
}
|
||||
return super.performAccessibilityActionInternal(action, arguments);
|
||||
}
|
||||
}
|
||||
@@ -13005,6 +13013,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean canReplace() {
|
||||
if (hasPasswordTransformationMethod()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (mText.length() > 0) && (mText instanceof Editable) && (mEditor != null)
|
||||
&& isSuggestionsEnabled() && mEditor.shouldOfferToShowSuggestions();
|
||||
}
|
||||
|
||||
boolean canShare() {
|
||||
if (!getContext().canStartActivityForResult() || !isDeviceProvisioned()) {
|
||||
return false;
|
||||
|
||||
@@ -275,6 +275,9 @@
|
||||
<!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_SWIPE_DOWN}. -->
|
||||
<item type="id" name="accessibilityActionSwipeDown" />
|
||||
|
||||
<!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_SHOW_SUGGESTIONS}. -->
|
||||
<item type="id" name="accessibilityActionShowSuggestions" />
|
||||
|
||||
<!-- View tag for remote views to store the index of the next child when adding nested remote views dynamically. -->
|
||||
<item type="id" name="remote_views_next_child" />
|
||||
|
||||
|
||||
@@ -3256,6 +3256,7 @@
|
||||
<public name="accessibilityActionSwipeRight" />
|
||||
<public name="accessibilityActionSwipeUp" />
|
||||
<public name="accessibilityActionSwipeDown" />
|
||||
<public name="accessibilityActionShowSuggestions" />
|
||||
</staging-public-group>
|
||||
|
||||
<staging-public-group type="style" first-id="0x01dd0000">
|
||||
|
||||
Reference in New Issue
Block a user