From c62cf80faa961bec1fe3a5c7d74199b9aa6a83d0 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Tue, 10 May 2016 11:02:24 -0400 Subject: [PATCH] Fix accessibility order in nav bar Change-Id: I2e90dee8e50b0642f39258fe3d04ded2f0bb8961 Fixes: 28281859 --- .../statusbar/phone/NavigationBarInflaterView.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java index ee4a102937603..4ec36f6081113 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java @@ -67,6 +67,9 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi private SparseArray mButtonDispatchers; private String mCurrentLayout; + private View mLastRot0; + private View mLastRot90; + public NavigationBarInflaterView(Context context, AttributeSet attrs) { super(context, attrs); mDensity = context.getResources().getConfiguration().densityDpi; @@ -163,6 +166,7 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi String[] start = sets[0].split(BUTTON_SEPARATOR); String[] center = sets[1].split(BUTTON_SEPARATOR); String[] end = sets[2].split(BUTTON_SEPARATOR); + // Inflate these in start to end order or accessibility traversal will be messed up. inflateButtons(start, (ViewGroup) mRot0.findViewById(R.id.ends_group), false); inflateButtons(start, (ViewGroup) mRot90.findViewById(R.id.ends_group), true); @@ -240,6 +244,15 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi } parent.addView(v); addToDispatchers(v); + View lastView = landscape ? mLastRot90 : mLastRot0; + if (lastView != null) { + v.setAccessibilityTraversalAfter(lastView.getId()); + } + if (landscape) { + mLastRot90 = v; + } else { + mLastRot0 = v; + } return v; }