diff --git a/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java b/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java index a64ec89e332..a93a986ea2a 100644 --- a/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java +++ b/src/com/android/settings/widget/HighlightablePreferenceGroupAdapter.java @@ -122,6 +122,9 @@ public class HighlightablePreferenceGroupAdapter extends PreferenceGroupAdapter && TextUtils.equals(mHighlightKey, getItem(position).getKey()))) { // This position should be highlighted. If it's highlighted before - skip animation. addHighlightBackground(holder, !mFadeInAnimated); + if (v != null) { + v.requestAccessibilityFocus(); + } } else if (Boolean.TRUE.equals(v.getTag(R.id.preference_highlighted))) { // View with highlight is reused for a view that should not have highlight removeHighlightBackground(holder, false /* animate */); diff --git a/tests/robotests/src/com/android/settings/widget/HighlightablePreferenceGroupAdapterTest.java b/tests/robotests/src/com/android/settings/widget/HighlightablePreferenceGroupAdapterTest.java index 00f2e19c28b..d6d5abf4cf5 100644 --- a/tests/robotests/src/com/android/settings/widget/HighlightablePreferenceGroupAdapterTest.java +++ b/tests/robotests/src/com/android/settings/widget/HighlightablePreferenceGroupAdapterTest.java @@ -174,6 +174,20 @@ public class HighlightablePreferenceGroupAdapterTest { assertThat(mViewHolder.itemView.getTag(R.id.preference_highlighted)).isNull(); } + /** + * When background is being updated, we also request the a11y focus on the preference + */ + @Test + public void updateBackground_shouldRequestAccessibilityFocus() { + View viewItem = mock(View.class); + mViewHolder = PreferenceViewHolder.createInstanceForTests(viewItem); + ReflectionHelpers.setField(mAdapter, "mHighlightPosition", 10); + + mAdapter.updateBackground(mViewHolder, 10); + + verify(viewItem).requestAccessibilityFocus(); + } + @Test public void updateBackground_highlight_shouldAnimateBackgroundAndSetHighlightedTag() { ReflectionHelpers.setField(mAdapter, "mHighlightPosition", 10);