diff options
| author | Phil Weaver <pweaver@google.com> | 2018-01-08 17:42:18 -0800 |
|---|---|---|
| committer | Phil Weaver <pweaver@google.com> | 2018-01-18 14:13:06 -0800 |
| commit | 6290fb599aab2ec12f065155c3d0c634c7a3fb84 (patch) | |
| tree | 4b6f0f3672095d012d24067beac136a2805d4692 /core/java/android/widget/TextView.java | |
| parent | af0c82ea1285678a41e480392278e51b4b2d3109 (diff) | |
Add semantics for accessibility headings
Adding the ability to mark TextView as a heading, and
to provide a heading depth. Plumbing that through to
accessibility services.
Bug: 34687453
Test: Adding CTS tests for new APIs.
Change-Id: I5262e32a2a11b2577802c68e701d2856e28abc21
Diffstat (limited to 'core/java/android/widget/TextView.java')
| -rw-r--r-- | core/java/android/widget/TextView.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index dac6c0269539..7d3fcf469551 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -309,6 +309,7 @@ import java.util.Locale; * @attr ref android.R.styleable#TextView_autoSizeMaxTextSize * @attr ref android.R.styleable#TextView_autoSizeStepGranularity * @attr ref android.R.styleable#TextView_autoSizePresetSizes + * @attr ref android.R.styleable#TextView_accessibilityHeading */ @RemoteView public class TextView extends View implements ViewTreeObserver.OnPreDrawListener { @@ -403,6 +404,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private int mCurTextColor; private int mCurHintTextColor; private boolean mFreezesText; + private boolean mIsAccessibilityHeading; private Editable.Factory mEditableFactory = Editable.Factory.getInstance(); private Spannable.Factory mSpannableFactory = Spannable.Factory.getInstance(); @@ -1267,6 +1269,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener case com.android.internal.R.styleable.TextView_lineHeight: lineHeight = a.getDimensionPixelSize(attr, -1); break; + case com.android.internal.R.styleable.TextView_accessibilityHeading: + mIsAccessibilityHeading = a.getBoolean(attr, false); } } @@ -5128,6 +5132,31 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * Gets whether this view is a heading for accessibility purposes. + * + * @return {@code true} if the view is a heading, {@code false} otherwise. + * + * @attr ref android.R.styleable#TextView_accessibilityHeading + */ + public boolean isAccessibilityHeading() { + return mIsAccessibilityHeading; + } + + /** + * Set if view is a heading for a section of content for accessibility purposes. + * + * @param isHeading {@code true} if the view is a heading, {@code false} otherwise. + * + * @attr ref android.R.styleable#TextView_accessibilityHeading + */ + public void setAccessibilityHeading(boolean isHeading) { + if (isHeading != mIsAccessibilityHeading) { + mIsAccessibilityHeading = isHeading; + notifyAccessibilityStateChanged(AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); + } + } + + /** * Convenience method to append the specified text to the TextView's * display buffer, upgrading it to {@link android.widget.TextView.BufferType#EDITABLE} * if it was not already editable. @@ -10677,6 +10706,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener info.setText(getTextForAccessibility()); info.setHintText(mHint); info.setShowingHintText(isShowingHint()); + info.setHeading(mIsAccessibilityHeading); if (mBufferType == BufferType.EDITABLE) { info.setEditable(true); |
