Fix a11y add in TileAdapter

* Pass a final int position to scroll so it cannot be modified somewhere
else.
* Use requestAccessibilityFocus instead of requestFocus

Test: manual
Fixes: 208364651
Change-Id: Ic9192a2ed30fe7ae53aebea62d3c308579900a69
This commit is contained in:
Fabian Kozynski
2022-01-18 11:44:01 -05:00
parent 7c3f1a0c88
commit d593dcd5c3

View File

@@ -414,9 +414,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
public void onLayoutChange(View v, int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
holder.mTileView.removeOnLayoutChangeListener(this);
holder.mTileView.requestFocus();
holder.mTileView.requestAccessibilityFocus();
if (mAccessibilityAction == ACTION_NONE) {
holder.mTileView.clearFocus();
holder.mTileView.clearAccessibilityFocus();
}
}
});
@@ -449,12 +449,13 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
// Update the tile divider position
mTileDividerIndex++;
mFocusIndex = mEditIndex - 1;
final int focus = mFocusIndex;
mNeedsFocus = true;
if (mRecyclerView != null) {
mRecyclerView.post(() -> {
final RecyclerView recyclerView = mRecyclerView;
if (recyclerView != null) {
recyclerView.smoothScrollToPosition(mFocusIndex);
recyclerView.smoothScrollToPosition(focus);
}
});
}